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 ลบ

ฟังก์ชันซึ่งจะกู้คืนหน่วยความจำที่จัดสรรสำหรับตัวแปรอาร์เรย์