คีย์เวิร์ด VBA
คีย์เวิร์ดมีบทบาทสำคัญในการทำงานกับอ๊อบเจค เนื่องจากการกำหนดตัวแปรเป็นอ๊อบเจค คือการกำหนด pointer ให้ชี้ไปยังอ๊อบเจค ทำให้การกำหนดค่าต้องใช้คีย์เวิร์ด ซึ่งแตกต่างไปจากตัวแปรปกติ
New
New เป็นคีย์เวิร์ดที่ใช้บอก Visual Basic ให้สร้าง instance ใหม่ ของ class ที่ระบุให้ คีย์เวิร์ดนี้จะส่งออกเป็นตำแหน่งข้อมูล
Set
Set เป็นคำสั่งที่ใช้ในการคัดลอกค่าจากด้านขวาของเครื่องหมายเท่ากับมายังตัวแปรอ๊อบเจคที่อยู่ด้านซ้าย
Set S1 = New clsSupplier ' สร้างอ๊อบเจค และเก็บตำแหน่ง
Set S2 = S1 ' คัดลอกตำแหน่ง
Set S2 = New clsSupplier() ' ให้ S2 ชี้ไปที่อ๊อบเจคใหม่แต่ลด counter อ้างอิงของ
' อ๊อบเจคต้นกำเนิด
Nothing
Nothing เป็นคีย์เวิร์ดที่ Visual Basic ใช้ในการกำหนดค่า Null หรือ 0 ให้กับตัวแปรอ๊อบเจค
Set S1 = Nothing
ถ้า S1 เป็นตัวแปรปัจจุบันที่ชี้ไปยัง instance เมื่อกำหนดให้เป็น Nothing
จะเป็นยกเลิกการเชื่อมกับ instance
Is
Is ใช้สำหรับการตรวจสอบตัวแปรอ๊อบเจค 2 ตัว ในการชี้ไปยัง instance ตัวเดียวกัน
If S1 Is S2 Then Print ' S1 และ S2 ชี้ไปยังอ๊อบเจคเดียวกัน
If S1 = S2 Then Print ' คุณสมบัติ Name ของ S1 และ S2 เหมือนกัน
TypeOf
is
TypeOf
Is เป็นประโยคคำสั่งสำหรับการทดสอบประเภทของตัวแปรอ๊อบเจค
If TypeOf S1 Is clsSupplier Then
Print "S1 is of type clsSupplier"
Else
Print "S1 is of type clsAddress"
End If
Tip: การหลีกเลี่ยงความผิดพลาดของคำสั่ง
TypeOf
Is เมื่อมีกำหนดค่าให้ตัวแปรอ๊อบเจค
' obj อ้างถึงตัว control
Dim lst As ListBox, cbo As ComboBox
If TypeOf obj Is ListBox Then
Set obj = ListBox
Else
Set cbo = ComboBox
End If
สามารถแปลงเป็นรูปคำสั่งที่เร็วกว่า
Dim lst As ListBox, cbo As ComboBox
On Error Resume Next
Set lst = ListBox ' ถ้ากำหนดไม่สำเร็จจออกคำสั่งและกำหนดค่าเป็น Nothing
Set cbo = ComboBox
On Error Goto 0 ' สำหรับการดักจับความผิดพลาด
TypeName
TypeName เป็นฟังก์ชันที่ส่งออกค่าเป็นชื่อของอ๊อบเจค Class ในรูปของข้อความ
Print "S1 is of type " & TypeName (S1)
ในหลายกรณี TypeName ใช้ทดสอบอ๊อบเจค
ByVal และ ByRef
ByVal และ ByRef เป็นคีย์เวิร์ดในการส่งผ่านค่าพารามิเตอร์ ซึ่งเป็นการอ้างถึง pointer แต่การใช้ ByVal และ ByRef มีความแตกต่างกัน
Sub Reset (supplier As clsSupplier) ' ByRef สามารถละได้
Set supplier = Nothing ' Set ตัวแปรให้เป็น Nothing
End Sub
Sub Reset2 (ByVal supplier As clsSupplier)
Set supplier = Nothing ' ไม่มีการทำงาน
End Sub
การส่งผ่านอ๊อบเจค โดยใช้ ByVal การอ้างอิง counter ภายในของ ByVal จะเพิ่มขึ้นและลดลงเมื่อออกจาก procedure แต่ ByRef จะไม่เกิดลักษณะเดียวกับ ByVal
|