วันจันทร์ที่ 25 สิงหาคม พ.ศ. 2557

Select rows ใดๆด้วยเม้าส์โดยใช้ vba (Excel)

Select rows ใดๆด้วยเม้าส์โดยใช้ vba (Excel) การเลือกแถวทั้งแถวด้วยเม้าส์โดยปกติเราสามารถคลิ้กที่หัวแถวใดๆได้เลย ทุกๆเซลล์ในแถวนั้นก็จะถู... thumbnail 1 summary
Select rows ใดๆด้วยเม้าส์โดยใช้ vba (Excel)

การเลือกแถวทั้งแถวด้วยเม้าส์โดยปกติเราสามารถคลิ้กที่หัวแถวใดๆได้เลย ทุกๆเซลล์ในแถวนั้นก็จะถูกเลือกโดยอัตโนมัติ สมมติว่าเราคลิ้กที่หัวแถวที่ 1 เซลล์ทุกเซลล์ในแถว 1 ก็จะถูกเลือก และหากคลิกที่แถวที่ 2 (เลข 2) เซลล์ทุกเซลล์ในแถวที่ 2 ก็จะถูกเลือกเช่นกัน นี่คือวิธีการอย่างง่ายที่เราสามารถเลือกแต่ละแถวได้ โดยมีเงื่อนไขว่าหากเราต้องการให้เกิดการเลือกที่แถวใดก็ให้คลิกที่หัวแถวนั้นเท่านั้น หากว่าเราคลิกที่เซลใดเซลล์หนึ่งในแถว 1 เฉยๆ มันจะไม่เลือกทั้งแถวให้เด็ดขาด มันจะเลือกเฉพาะเซลล์ที่เราคลิกเท่านั้น

หากเราต้องการให้ Excel เกิดแถบสว่าง(แถบที่บ่งบอกว่าเราได้เลือกแถวนั้นๆ)ทั้งแถว(เลือกทุกเซลล์) โดยไม่ว่าเราจะคลิกที่เซลล์ใดๆก็ตามที่แถวนั้นๆ มันก็จะเลือกทั้งแถวให้ เราจะต้องเขียโค้ดด้วย vba

เช่น เราคลิกที่เซลล์ A1 มันก็จะเลือกแถวที่ 1 ให้

ถ้าเราคลิกที่เซลล์ D2 มันก็จะเลือกแถวที่ 2 ให้

ถ้าเราคลิกที่ c3 มันจะเลือกแถวที่ 3 ให้ทั้งแถว อย่างนี้เป็นต้น เราต้องเขียนโค้ด vba ดังนี้

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row = 1 Then

Rows("1:1").Select

End If



If Target.Row = 2 Then

Rows("2:2").Select

End If



If Target.Row = 3 Then

Rows("3:3").Select

End If


End Sub
โดยเขียนในเหตุการณ์ worksheet_selectionchange

ซึ่งในเหตุการณ์นี้จะมีตัวแปรตัวหนึ่งชื่อว่า target ซึ่งเป็นตัวแปรประเภท range ใช้ระบุช่วงของเซลล์ได้ ในตัวอย่างนี้เราตรวจสอบว่าเป็นแถวใดโดยใช้ target.row โดยตรวจสอบโดยใช้ if ซึ่งโค้ดไม่ซับซ้อนอะไร ลองศึกษาดูจะเห็นว่าง่ายนิดเดียว..เพื่อความเข้าใจที่มากขึ้นให้ลองนำโค้ดดังกล่าวไปใช้ดูแล้วจะเข้าใจทุกอย่างได้อย่างง่ายดาย

ตัวอย่างเพิ่มเติม

หากเราต้องการให้แถว 2 และ แถว 3 ถูกเลือกพร้อมๆกัน เราจะต้องเขียนโค้ดว่า

Rows(“2:3”).Select

หากเราต้องการให้แถว 1 และ แถว 2 ถูกเลือกพร้อมๆกัน ให้เราเขียนโค้ดว่า

Rows(“1:2”).Select

หากเราต้องการให้แถว 7 และ แถว 9 ถูกเลือกพร้อมๆกันให้เราเขียนโค้ดว่า

Range("7:7,9:9").Select

เราจะสังเกตเห็นว่าแถวที่ไม่ติดกันเราจะใช้คำสั่งที่แตกต่างกับแถวที่ติดกัน ก็ให้เรายึดเป็นแบบอย่างเอาไว้ด้วยครับ ลองนำไปประยุกต์ดูแล้วจะเข้าใจ ตัวอย่างเล็กๆแบบนี้มีประโยชน์กับงานของเราอย่างแน่นอนในอนาคต...