7 กรกฎาคม 2555

[107] เรียกใช้มาโครโดยไม่ใช่ปุ่ม (Run Excel Macro by click a cell)

ปกติเวลาที่จะให้ผู้ใช้เรียก Macro เราจะทำเป็นปุ่ม หรือ Input ใด ๆ ที่มากจาก Form Control ง่ายสุดก็ปุ่มกด เพราะตัว Excel ออกแบบไว้อย่างนั้น



ถ้าเกิดว่าเราไม่สะดวกที่จะใช้ปุ่มกด หรือ มันทำให้การออกแบบ Excel ไม่สะดวกนัก อยากจะให้คลิกที่เซลล์ หรือ ข้อความที่เราต้องการได้เลย จากการ google พบว่ามีการประยุกต์เอา Event WorkSheet BeforeDoubleClick ในการใช้งานจริงดูไม่ค่อยสะดวกนักกับการ double click เลยหาวิธีอื่นแทน

เลยมาจบตรง Hyperlink น่าจะเข้าท่าที่สุด แต่ประเด็นคือ มันไม่ได้ออกแบบมาให้เรียกมาโคร (๑•́ ₃ •̀๑) .... แต่จะว่าไปลิงก์บน HTML ก็สามารถใส่ JavaScript ได้ เลยเอาหลักการเดียวกันมาใช้คือ
<a href="#" onclick="somefunction()">my link</a>
นั้นคือ สร้าง Hyperlink ที่คลิกแล้วไม่ไปไหน อยู่ที่เดิม แล้วไปเพิ่ม Event WorkSheet FollowHyperlink แทน เข้าทางเลยคราวนี้ 〜(・▽・〜) (〜・▽・)〜
สร้าง Hyperlink ที่พอคลิกแล้วอยู่ที่เดิม
เมื่อลองคลิกที่ข้อความในเซลล์ที่ได้สร้าง Hyperlink จะพบว่า ActiveCell อยู่ที่เดิมตามที่ตั้งไว้ ที่เหลือแค่ไปเขียนคำสั่งเพื่อดูว่าเราจะให้ทำคำสั่งอะไร โดยใน  Sub Worksheet_FollowHyperlink จะส่งตัวแปร Target มาให้เป็น Hyperlink
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)


End Sub

เมื่อลองดูว่า Hyperlink มีคุณสมบัติอะไรบ้างเพื่อเราจะได้นำไปใช้งาน ที่เหลืออยู่ที่เราจะใช้เงื่อนไขอะไรในการดักจับลิงก์ที่เราต้องการมาเรียกมาโครเท่านั้น
Properties ของ Hyperlink
อันนี้คงไม่เป็นไอเดียที่ใหม่อะไร แค่ลองเอาของที่มีอยู่แล้วมาประยุกต์ดู ☆⌒(>。≪)

ถ้าคลิกแล้วให้เรียก MySub()
คลิกที่ลิงก์แล้วเรียกมาโครได้แล้ว (^ω^)V


เกี่ยวกับเจ้าของบล๊อก

รูปภาพของฉัน

เป็นโปรแกรมเมอร์ที่ฝันว่าจะได้นอนเกาพุงไปวัน ๆ จนพุงลดกลายเป็นเอว ได้เป็นบุคคลที่มีความสุขที่สุดในโลกจนคนอื่น ๆ อิจฉา