VBA - อาร์เรย์
เรารู้ดีว่าตัวแปรคือภาชนะที่ใช้เก็บค่า บางครั้งนักพัฒนาสามารถเก็บค่ามากกว่าหนึ่งค่าในตัวแปรเดียวได้ในแต่ละครั้ง เมื่อชุดของค่าถูกเก็บไว้ในตัวแปรเดียวจึงเรียกว่าarray variable.
การประกาศอาร์เรย์
อาร์เรย์ถูกประกาศในลักษณะเดียวกับที่มีการประกาศตัวแปรยกเว้นว่าการประกาศตัวแปรอาร์เรย์จะใช้วงเล็บ ในตัวอย่างต่อไปนี้ขนาดของอาร์เรย์จะกล่าวถึงในวงเล็บ
'Method 1 : Using Dim
Dim arr1() 'Without Size
'Method 2 : Mentioning the Size
Dim arr2(5) 'Declared with size of 5
'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
แม้ว่าขนาดอาร์เรย์จะระบุเป็น 5 แต่ก็สามารถเก็บค่าได้ 6 ค่าเนื่องจากดัชนีอาร์เรย์เริ่มต้นจากศูนย์
ดัชนีอาร์เรย์ต้องไม่ติดลบ
VBScript Arrays สามารถเก็บตัวแปรประเภทใดก็ได้ในอาร์เรย์ ดังนั้นอาร์เรย์สามารถจัดเก็บจำนวนเต็มสตริงหรืออักขระในตัวแปรอาร์เรย์เดียว
การกำหนดค่าให้กับอาร์เรย์
ค่าจะถูกกำหนดให้กับอาร์เรย์โดยการระบุค่าดัชนีอาร์เรย์เทียบกับแต่ละค่าที่จะกำหนด มันสามารถเป็นสตริง
ตัวอย่าง
เพิ่มปุ่มและเพิ่มฟังก์ชันต่อไปนี้
Private Sub Constant_demo_Click()
Dim arr(5)
arr(0) = "1" 'Number as String
arr(1) = "VBScript" 'String
arr(2) = 100 'Number
arr(3) = 2.45 'Decimal Number
arr(4) = #10/07/2013# 'Date
arr(5) = #12.45 PM# 'Time
msgbox("Value stored in Array index 0 : " & arr(0))
msgbox("Value stored in Array index 1 : " & arr(1))
msgbox("Value stored in Array index 2 : " & arr(2))
msgbox("Value stored in Array index 3 : " & arr(3))
msgbox("Value stored in Array index 4 : " & arr(4))
msgbox("Value stored in Array index 5 : " & arr(5))
End Sub
เมื่อคุณเรียกใช้ฟังก์ชันข้างต้นจะสร้างผลลัพธ์ต่อไปนี้
Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM
อาร์เรย์หลายมิติ
อาร์เรย์ไม่ได้ จำกัด เพียงมิติเดียว แต่สามารถมีได้สูงสุด 60 มิติ อาร์เรย์สองมิติเป็นอาร์เรย์ที่ใช้บ่อยที่สุด
ตัวอย่าง
ในตัวอย่างต่อไปนี้อาร์เรย์หลายมิติถูกประกาศด้วย 3 แถวและ 4 คอลัมน์
Private Sub Constant_demo_Click()
Dim arr(2,3) as Variant ' Which has 3 rows and 4 columns
arr(0,0) = "Apple"
arr(0,1) = "Orange"
arr(0,2) = "Grapes"
arr(0,3) = "pineapple"
arr(1,0) = "cucumber"
arr(1,1) = "beans"
arr(1,2) = "carrot"
arr(1,3) = "tomato"
arr(2,0) = "potato"
arr(2,1) = "sandwitch"
arr(2,2) = "coffee"
arr(2,3) = "nuts"
msgbox("Value in Array index 0,1 : " & arr(0,1))
msgbox("Value in Array index 2,2 : " & arr(2,2))
End Sub
เมื่อคุณเรียกใช้ฟังก์ชันข้างต้นจะสร้างผลลัพธ์ต่อไปนี้
Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee
คำชี้แจง ReDim
คำสั่ง ReDim ใช้เพื่อประกาศตัวแปรอาร์เรย์แบบไดนามิกและจัดสรรหรือจัดสรรพื้นที่จัดเก็บใหม่
ไวยากรณ์
ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
คำอธิบายพารามิเตอร์
Preserve - พารามิเตอร์ทางเลือกที่ใช้เพื่อเก็บรักษาข้อมูลในอาร์เรย์ที่มีอยู่เมื่อคุณเปลี่ยนขนาดของมิติข้อมูลสุดท้าย
Varname - พารามิเตอร์ที่ต้องการซึ่งแสดงถึงชื่อของตัวแปรซึ่งควรเป็นไปตามหลักการตั้งชื่อตัวแปรมาตรฐาน
Subscripts - พารามิเตอร์ที่จำเป็นซึ่งระบุขนาดของอาร์เรย์
ตัวอย่าง
ในตัวอย่างต่อไปนี้อาร์เรย์ได้รับการกำหนดใหม่แล้วค่าที่เก็บรักษาไว้เมื่อขนาดที่มีอยู่ของอาร์เรย์มีการเปลี่ยนแปลง
Note - เมื่อปรับขนาดอาร์เรย์ให้เล็กลงกว่าเดิมข้อมูลในองค์ประกอบที่ถูกกำจัดจะสูญหายไป
Private Sub Constant_demo_Click()
Dim a() as variant
i = 0
redim a(5)
a(0) = "XYZ"
a(1) = 41.25
a(2) = 22
REDIM PRESERVE a(7)
For i = 3 to 7
a(i) = i
Next
'to Fetch the output
For i = 0 to ubound(a)
Msgbox a(i)
Next
End Sub
เมื่อคุณเรียกใช้ฟังก์ชันข้างต้นจะสร้างผลลัพธ์ต่อไปนี้
XYZ
41.25
22
3
4
5
6
7
วิธีการอาร์เรย์
มีฟังก์ชั่น inbuilt ต่างๆภายใน VBScript ซึ่งช่วยให้นักพัฒนาจัดการกับอาร์เรย์ได้อย่างมีประสิทธิภาพ วิธีการทั้งหมดที่ใช้ร่วมกับอาร์เรย์มีดังต่อไปนี้ โปรดคลิกที่ชื่อวิธีการเพื่อทราบรายละเอียด
ซีเนียร์ | ฟังก์ชั่นและคำอธิบาย |
---|---|
1 | ปอนด์ ฟังก์ชันที่ส่งคืนจำนวนเต็มที่สอดคล้องกับตัวห้อยที่เล็กที่สุดของอาร์เรย์ที่กำหนด |
2 | UBound ฟังก์ชันซึ่งส่งคืนจำนวนเต็มที่สอดคล้องกับตัวห้อยที่ใหญ่ที่สุดของอาร์เรย์ที่กำหนด |
3 | แยก ฟังก์ชันซึ่งส่งคืนอาร์เรย์ที่มีค่าจำนวนที่ระบุ แยกตามตัวคั่น |
4 | เข้าร่วม ฟังก์ชันซึ่งส่งคืนสตริงที่มีจำนวนสตริงย่อยที่ระบุในอาร์เรย์ นี่คือฟังก์ชันตรงข้ามกันของ Split Method |
5 | กรอง ฟังก์ชันซึ่งส่งคืนอาร์เรย์ที่ใช้ศูนย์ที่มีชุดย่อยของอาร์เรย์สตริงตามเกณฑ์การกรองเฉพาะ |
6 | IsArray ฟังก์ชันซึ่งส่งคืนค่าบูลีนที่ระบุว่าตัวแปรอินพุตเป็นอาร์เรย์หรือไม่ |
7 | ลบ ฟังก์ชันซึ่งจะกู้คืนหน่วยความจำที่จัดสรรสำหรับตัวแปรอาร์เรย์ |