บทที่ 4 การอ้างอิงข้อมูลในเซลล์


การเขียน โปรแกรมด้วย VBA ในโปรแกรมเอ็กเซลล์ ในส่วนของการติดต่อกับข้อมูล หรือฐานข้อมูลในเวิร์คชีทต่างๆ  เป็นสิ่งจำเป็นที่ผู้เขียนต้องทำความเข้าใจเบื้องต้นว่า โปรแกรมมีการอ้างอิงข้อมูลในเซลล์ต่างๆ ในตารางอย่างไร เพื่อที่จะได้นำข้อมูลต่างๆ เหล่านั้นไปใช้ในการคำนวน รวมถึงการแสดงผลการคำนวนต่างๆ ผ่านเซลล์ในเวิร์คชีท การอ้างอิงตำแหน่งข้อมูลในตารางเอ็กเซล สามารถกระทำได้หลายวิธีดังนี้
1.อ้างอิงโดยการใช้ Range พร็อพเพอร์ตี้
2.อ้างอิงโดยการใช้ Cells พร็อพเพอร์ตี้
3.อ้างอิงโดยการใช้ Rows, Columns พร็อพเพอร์ตี้

1.อ้างอิงโดยการใช้คุณสมบัติ (property) Range
การอ้างอิง
ความหมาย
Range("A1")
อ้างอิง เซลล์ A1
Range("A1:C10")
อ้างอิง ช่วงข้อมูลจากเซลล์ A1 ถึงเซลล์ C10
Range("C5:D9,G9:H16")
อ้างอิง ช่วงข้อมูลหลายช่วง
Range("A:A")
อ้างอิง คอลัมป์ A
Range("1:1")
อ้างอิง แถวที่ 1
Range("A:C")
อ้างอิงช่วงข้อมูลจาก คอลัมป์ A ถึง คอลัมป์ C
Range("1:5")
อ้างอิงช่วงข้อมูลจากแถวที่ 1 ถึงแถวที่ 5
Range("1:1,3:3,8:8")
อ้างอิง แถวที่ 1, 3 และ 8
Range("A:A,C:C,F:F")
อ้างอิง คอลัมป์ A, C และ F


ตัวอย่าง  กำหนดให้ช่วงอ้างอิง Range("A1:C10") มีค่าเท่ากับ 10
วิธีทำ 1.เปิดโปรแกรมเอ็กเซลล์>เปิดไฟล์ใหม่>คลิกขวาบนเมนูบาร์>เลือก Forms>เลือกปุ่ม Button1>ลากแล้ววางลงบน Sheet1>กรอบ Assign macro จะขึ้นอัตโนมัติ ให้เลือก New>
รูปที่ 4.1
เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
Range("A1:C10") = 10
End Sub
ผลการทดสอบโปรแกรม
รูปที่ 4.2
2.อ้างอิงโดยการใช้คุณสมบัติ (property) Cells
การอ้างอิงในเซลล์ หรือช่วงของเซลล์ สามารถใช้คุณสมบัติ  Cells ในการอ้างอิง ข้อมูลในเซลล์เดียว ด้วยการใช้หมายเลขตำแหน่งแถว และคอลัมป์
การอ้างอิง
ความหมาย
Cells(1,1)
อ้างอิง ข้อมูลในเซลล์ แถวที่ 1, คอลัมป์ที่ 1
Worksheets(“sheet1”).Cells
อ้างอิง ข้อมูลทั้งหมดใน worksheet
ตัวอย่าง  กำหนดให้ช่วงอ้างอิง Cells(1,1) มีค่าเป็น ประโยคที่พิมพ์ลงใน Inputbox
วิธีทำ 1.เปิดโปรแกรมเอ็กเซลล์>เปิดไฟล์ใหม่>คลิกขวาบนเมนูบาร์>เลือก Forms>เลือกปุ่ม Button1>ลากแล้ววางลงบน Sheet1>กรอบ Assign macro จะขึ้นอัตโนมัติ ให้เลือก New>เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
Dim a As String
a = InputBox("Please input word")
Cells(1, 1) = a
End Sub
ผลการทดสอบโปรแกรม
รูปที่ 4.3
เมื่อกดปุ่ม Button1 จะมีไดอะล็อก ให้ใส่ค่า หรือพิมพ์อักษรลง แล้วกดปุ่ม OK จะเห็นว่า ค่าที่พิมพ์เข้าไปในไดอะล็อก จะถูกส่งข้อมูลไปที่ เซลล์ที่ได้อ้างอิง ซึ่งก็คือ Cells(1,1)
3.อ้างอิงโดยการใช้คุณสมบัติ (property) Rows, Columns
ในการอ้างอิงข้อมูลต่างในเซลล์ หรือช่วงของเซลล์ สามารถใช้คุณสมบัติ Rows และ Columns ในการอ้างอิง ข้อมูลทั้งแถว หรือทั้งคอลัมน์
การอ้างอิง
ความหมาย
Rows(1)
อ้างอิงข้อมูลแถวที่ 1 ทั้งแถว
Rows
อ้างอิงข้อมูลทุกแถวใน  worksheet
Columns(1)
อ้างอิงข้อมูลในคอลัมป์ที่ 1 ทั้งคอลัมป์
Columns("A")
อ้างอิงข้อมูลในคอลัมป์ที่ 1 ทั้งคอลัมป์
Columns
อ้างอิงข้อมูลทุกคอลัมป์ใน  worksheet
ตัวอย่าง  กำหนดให้ช่วงอ้างอิง Row(1) แถวที่ 1 ทั้งแถว  มีค่าเท่ากับ 9
วิธีทำ 1.เปิดโปรแกรมเอ็กเซลล์>เปิดไฟล์ใหม่>คลิกขวาบนเมนูบาร์>เลือก Forms>เลือกปุ่ม Button1>ลากแล้ววางลงบน Sheet1>กรอบ Assign macro จะขึ้นอัตโนมัติ ให้เลือก New>เมื่อหน้าต่าง Visual Basic Editor เปิดขึ้น ให้พิมพ์คำสั่งดังนี้
Sub Button1_Click()
Rows(1) = 9
End Sub
ผลการทดสอบโปรแกรม
รูปที่ 4.4
เมื่อทำการคลิกที่ปุ่ม Button1 จะเห็นว่าทุกเซลล์ในแถวที่ 1 มีค่าเท่ากับ 9