บทช่วยสอนนี้จะอธิบายอาร์เรย์ VBA, ประเภทอาร์เรย์ต่างๆ, อาร์เรย์ตัวแปร และวิธีการอาร์เรย์ด้วยความช่วยเหลือของตัวอย่างการเขียนโปรแกรม:
ตัวแปร VBA ปกติเป็นตัวยึดตำแหน่งที่เก็บ ค่าของข้อมูลเดียว มีความสัมพันธ์แบบ 1 ต่อ 1 เช่น 1 ตัวแปรสำหรับ 1 ค่า
ตอนนี้ลองจินตนาการถึงการเก็บค่าหลายค่าที่เป็นประเภทเดียวกัน แทนที่จะสร้างตัวแปรหลายตัว คุณสามารถสร้างตัวแปรเพียงตัวเดียวและจัดเก็บค่าประเภทเดียวกันทั้งหมด ตัวแปรนี้เรียกว่า ARRAY
ในบทช่วยสอนนี้ คุณจะได้รู้ว่าอาร์เรย์ VBA คืออะไร อาร์เรย์หนึ่งมิติและสองมิติพร้อมกับอาร์เรย์ประเภทต่างๆ เช่น Fixed และ Dynamic เราจะเข้าใจวิธีการอาร์เรย์ต่างๆ ที่ใช้ใน VBA ด้วย
อาร์เรย์ VBA
อาร์เรย์เป็นตัวแปรชนิดพิเศษที่สามารถเก็บค่าข้อมูลประเภทเดียวกันได้หลายค่า .
ตัวอย่างเช่น ถ้าคุณมีชื่อพนักงาน 100 คน แทนที่จะสร้างตัวแปรประเภทสตริงข้อมูล 100 ตัวแปร คุณสามารถสร้างตัวแปรอาร์เรย์ประเภทสตริงหนึ่งรายการและกำหนดค่า 100 ค่า ไปยังตัวแปรอาร์เรย์เดียวกัน
อาร์เรย์หนึ่งมิติ
อาร์เรย์ที่มีองค์ประกอบทั้งหมดในแถวเดียวหรือในคอลัมน์เดียวเรียกว่าอาร์เรย์หนึ่งมิติ การแสดงชื่อของนักเรียนทั้งหมดในชั้นเรียนในคอลัมน์เดียวคือตัวอย่างของอาร์เรย์หนึ่งมิติ มีประกาศดังรูปมีการประกาศอาร์เรย์ตามที่แสดงด้านล่าง
Dim ArrayName(FirstIndex To LastIndex, FirstIndex To LastIndex) As DataType.
ตัวอย่าง: Dimmarks(1 To 3 , 0 ถึง 2) As Integer
Q #3) จะแปลง Range เป็น Array ได้อย่างไร
คำตอบ: เราสามารถใช้ฟังก์ชัน Transpose เพื่อแปลงช่วงเป็นอาร์เรย์ รหัสนี้จะสร้าง Mys[10]
Sub Example() Dim Mys As Variant Mys = Application.Transpose(Range("A1:A10")) End Sub
Q #4) ตัวแปรอาร์เรย์ใน VBA คืออะไร
คำตอบ: อาร์เรย์ตัวแปรจะยอมรับประเภทข้อมูลทุกประเภทสำหรับดัชนีของมัน เช่น คุณสามารถเก็บค่าประเภทต่างๆ ไว้ในอาร์เรย์เดียว
ตัวอย่าง:
Dim arrayData(3) As Variant
arrayData(0) = “Vikas Vipal”
arrayData(1) = 411234567890#
วิธีการปรับขนาดอาร์เรย์ระหว่าง รันไทม์และยังรักษาค่าโดยใช้ redim รักษาไว้พร้อมตัวอย่าง ในที่สุด เราได้เรียนรู้วิธี Array ที่จะช่วยเราในการดำเนินการหลายอย่าง
ด้านล่างDim arrayname(lowerbound To UpperBound) As DataType
มีหลายวิธีในการประกาศอาร์เรย์ ด้านล่างนี้คือตัวอย่างบางส่วน
ตัวอย่าง:
#1) Dim MyArrayExample(0 ถึง 3) As Integer
สร้างอาร์เรย์ที่มีตำแหน่ง 0,1,2,3 ที่จะยอมรับค่าจำนวนเต็ม
#2) Dim MyArray2(3) As String
ค่าเริ่มต้นจาก 0 ถึง 3 และสร้างอาร์เรย์ที่มีตำแหน่ง 0,1,2,3 ที่จะยอมรับค่าสตริง
#3) Dim MyArray2(13 ถึง 15) เป็นสองเท่า
สร้างอาร์เรย์ที่เริ่มต้นจาก 13 เช่น 13, 14 และ 15 และยอมรับค่าสองเท่า เราได้กล่าวถึงขอบเขตล่างเป็น 13 ดังนั้นอาร์เรย์จะเริ่มจัดสรรค่าจากตำแหน่ง 13 แทนที่จะเป็น 0
มาสร้างโค้ดง่ายๆ และทำความเข้าใจการประกาศอาร์เรย์ทั้ง 3 วิธีกัน
หมายเหตุ: หากต้องการเขียนรหัส VB ให้เปิด Microsoft Excel (รุ่นที่รองรับคือ Excel 2007, 2010, 2013, 2016, 2019) ไปที่ แท็บนักพัฒนา -> Visual Basic (หรือใช้ทางลัด Alt+F11) ในโปรแกรมแก้ไข VB คลิกที่ แทรก -> โมดูล และวางโค้ดด้านล่าง
พิจารณาขั้นตอนด้านล่างที่แสดงการประกาศประเภทต่างๆ
Private Sub arrayExample1() Dim firstQuarter(0 To 2) As String ‘creates array with index 0,1,2 firstQuarter(0) = "Jan" firstQuarter(1) = "Feb" firstQuarter(2) = "Mar" MsgBox "First Quarter in calendar " & " " & firstQuarter(0) & " " & firstQuarter(1) & " " & firstQuarter(2) End Sub Private Sub arrayExample2() Dim secondQuarter(2) As String ‘creates array with index 0,1,2 secondQuarter(0) = "April" secondQuarter(1) = "May" secondQuarter(2) = "June" MsgBox "Second Quarter in calendar " & " " & secondQuarter(0) & " " & secondQuarter(1) & " " & secondQuarter(2) End Sub Private Sub arrayExample3() Dim thirdQuarter(13 To 15) As String ‘creates array with index 13,14,15 thirdQuarter(13) = "July" thirdQuarter(14) = "Aug" thirdQuarter(15) = "Sep" MsgBox "Third Quarter in calendar " & " " & thirdQuarter(13) & " " & thirdQuarter(14) & " " & thirdQuarter(15) End Sub
กด F5 หรือกดปุ่มเรียกใช้บนแถบเครื่องมือ เพื่อรันโค้ด
Regular Variable Vs Array Variable
ตอนนี้เรารู้แล้วว่าอาร์เรย์หนึ่งมิติทำงานอย่างไร ลองใช้เวลาสักครู่เพื่อทำความเข้าใจว่าทำไมอาร์เรย์จึงมีความสำคัญภาษาโปรแกรม
สมมติว่าคุณต้องป้อนเงินเดือนของพนักงาน 5 คน เพื่อให้บรรลุเป้าหมายนี้โดยใช้ตัวแปรปกติ คุณต้องสร้างตัวแปร 5 ตัว
Public Sub RegularVariable() Dim shet As Worksheet Set shet = ThisWorkbook.Worksheets("Sheet1") ' Declare variable for each student Dim Emp1 As String Dim Emp2 As String Dim Emp3 As String Dim Emp4 As String Dim Emp5 As String ' Read student marks from cell Emp1 = shet.Range("A" & 2).Value Emp2 = shet.Range("A" & 3).Value Emp3 = shet.Range("A" & 4).Value Emp4 = shet.Range("A" & 5).Value Emp5 = shet.Range("A" & 6).Value ' Print student marks Debug.Print "Emp Name" Debug.Print Emp1 Debug.Print Emp2 Debug.Print Emp3 Debug.Print Emp4 Debug.Print Emp5 End Sub
ตอนนี้มาสร้างโค้ดเดียวกันโดยใช้ตัวแปร Array
Option Explicit Public Sub ArrayVarible() Dim shet As Worksheet Set shet = ThisWorkbook.Worksheets("Sheet1") Dim Employee(1 To 6) As String Dim i As Integer For i = 1 To 6 Employee(i) = shet.Range("A" & i).Value Debug.Print Employee(i) Next i End Sub
ที่นี่ เราเพิ่งใช้ตัวแปรอาร์เรย์ตัวเดียวที่จะเก็บชื่อพนักงานทั้งหมด สมมติว่าคุณต้องการเพิ่มชื่อพนักงานอีก 100 ชื่อ คุณเพียงแค่เปลี่ยนขนาดอาร์เรย์และไม่ต้องสร้างตัวแปรใหม่
ซึ่งจะลดจำนวนบรรทัดในโค้ดและทำให้ง่าย เข้าใจและอ่านได้
อาร์เรย์สองมิติ
อาร์เรย์ 2 มิติมี 2 ดัชนี – ดัชนีแรกจะแทนแถวและดัชนีที่ 2 จะแทนคอลัมน์ มีหลายแถวและหลายคอลัมน์ และมักจะแสดงในรูปแบบตาราง
การประกาศอาร์เรย์ 2 มิติมีดังนี้:
Dim ArrayName(FirstIndex เป็น LastIndex, FirstIndex เป็น LastIndex) เป็นประเภทข้อมูล
พิจารณาตัวอย่างการจัดเก็บคะแนนของนักเรียน 2 คนที่ได้รับจาก 3 วิชา ดังนั้นเราจะสร้างอาร์เรย์ 2 มิติที่มี 2 แถวและ 3 คอลัมน์
เราจะเริ่มอาร์เรย์จากแถวที่ 1 ไปยังแถวที่ 2 และคอลัมน์ที่ 1 ไปยังคอลัมน์ที่ 3
Sub Twodim() Dim totalMarks(1 To 2, 1 To 3) As Integer totalMarks(1, 1) = 23 totalMarks(2, 1) = 34 totalMarks(1, 2) = 33 totalMarks(2, 2) = 55 totalMarks(1, 3) = 45 totalMarks(2, 3) = 44 Msgbox “Total Marks in Row 2 and column 2 is “ &totalMarks(2,2) Msgbox “Total Marks in Row 1 and column 3 is “ &totalMarks(1,3) End Sub
กด F5 หรือกดปุ่มเรียกใช้บนแถบเครื่องมือเพื่อเรียกใช้โค้ด
แถว 2 และคอลัมน์ 2
แถว 1 และคอลัมน์ 3
อาร์เรย์แบบคงที่
อาร์เรย์แบบคงที่หรือที่เรียกว่าแบบคงที่อาร์เรย์มีขอบเขตล่างและขอบเขตบนคงที่ และขนาดนี้จะไม่สามารถเปลี่ยนแปลงได้ในขณะรันไทม์ มีการระบุขนาดของอาร์เรย์ในระหว่างการประกาศภายในวงเล็บ ตัวอย่างทั้งหมดข้างต้นเป็นอาร์เรย์คงที่ ซึ่งเราได้กล่าวถึงขนาดของอาร์เรย์ในระหว่างการประกาศ
อาร์เรย์คงที่มักจะใช้เมื่อคุณแน่ใจเกี่ยวกับขนาดของอาร์เรย์ ตัวอย่างเช่น จำนวนวันในหนึ่งสัปดาห์ คุณสามารถสร้างอาร์เรย์ที่มีขอบเขตล่างเป็น 0 และขอบเขตบนเป็น 6 และต้องแน่ใจว่าคุณจะไม่เปลี่ยนขนาด
อาร์เรย์แบบไดนามิก
ไดนามิกอาร์เรย์ช่วยให้เราปรับขนาดอาร์เรย์ระหว่างรันไทม์ได้ สิ่งเหล่านี้มีประโยชน์เมื่อคุณไม่แน่ใจเกี่ยวกับขนาดของอาร์เรย์ สมมติว่าในการรับเข้าศึกษาในวิทยาลัย คุณอาจไม่แน่ใจว่าจะมีนักเรียนกี่คนที่จะได้เข้าเรียน ดังนั้นคุณจึงไม่สามารถกำหนดขนาดได้ในขณะออกแบบหรือประกาศ
การประกาศของอาร์เรย์แบบไดนามิกจะคล้ายกับแบบคงที่ อาร์เรย์ที่มีวงเล็บว่าง
Dim Employee() As String
REDIM
เมื่อเราต้องการเปลี่ยนขนาด เราจำเป็นต้องใช้ REDIM เราต้องทราบว่าขอบล่างไม่สามารถเปลี่ยนแปลงได้ เราเปลี่ยนได้เฉพาะขอบบนของอาร์เรย์เท่านั้น
Sub dynamicArray() Dim dynArray() As String Dim curdate As Date curdate = Now ReDim dynArray(2) ‘ Redim will help to change the array size during runtime dynArray(0) = "John" dynArray(1) = "Tom" dynArray(2) = "Tonny" MsgBox "Students Enrolled after " & curdate & " are “ & dynArray(0) & ", " & dynArray(1) & ", " & dynArray(2) End Sub
ตอนนี้ เรารู้ว่าเราทำได้ เปลี่ยนขนาดของอาร์เรย์ระหว่างรันไทม์ ดังนั้นเราสามารถใช้คำสั่ง ReDim ได้ทุกเมื่อที่เราต้องการเพิ่ม ubound ของอาร์เรย์ ลองเพิ่มขนาดอาร์เรย์อีกครั้งและเพิ่มใหม่ชื่อนักเรียน
Sub RedimExample() Dim dynArray() As String Dim curdate As Date curdate = Now Dim size As Integer ReDim dynArray(2) dynArray(0) = "John" dynArray(1) = "Tom" dynArray(2) = "Tonny" MsgBox "Students Enrolled untill " & curdate & " are " & dynArray(0) & ", " & dynArray(1) & ", " & dynArray(2) ReDim dynArray(3) ‘ Redim will reinitialise the array and destroy the old values dynArray(3) = "John" MsgBox "Students Enrolled untill " & curdate & " are " & dynArray(0) & ", " & dynArray(1) & ", " & dynArray(2) & " , " & dynArray(3) End Sub
คุณจะสังเกตเห็นว่าผลลัพธ์ไม่แสดงชื่อของนักเรียนที่เพิ่มไว้ก่อนหน้านี้ จะให้ค่าว่าง นั่นเป็นเพราะคำสั่ง Redim จะสร้างอาร์เรย์ใหม่ที่มีขนาดใหม่และทำลายค่าเก่า
ReDim Preserve
คำสั่ง Represerve ช่วยให้เราเอาชนะข้อจำกัดของ ReDim โดยการรักษาค่าเดิม และด้วยเหตุนี้จึงเพิ่มขนาดของอาร์เรย์
ลองเขียนโค้ดด้านบนใหม่โดยใช้ ReDim Preserve
Sub preserveExample() Dim dynArray() As String Dim curdate As Date curdate = Now Dim size As Integer ReDim dynArray(2) dynArray(0) = "John" dynArray(1) = "Tom" dynArray(2) = "Tonny" MsgBox "Students Enrolled untill " & curdate & " are " & dynArray(0) & ", " & dynArray(1) & ", " & dynArray(2) ReDim preserve dynArray(3) ‘ Redim preserve will retain the old values dynArray(3) = "John" MsgBox "Students Enrolled untill " & curdate & " are " & dynArray(0) & ", " & dynArray(1) & ", " & dynArray(2) & " , " & dynArray(3) End Sub
ตามที่เราใช้ รักษาคีย์เวิร์ด ค่าที่ป้อนก่อนหน้านี้จะไม่สูญหาย และเพิ่มค่าใหม่ได้สำเร็จ
Variant Array
จนถึงตอนนี้ เราได้เห็นอาร์เรย์ที่ยอมรับค่าประเภทเดียวกัน ทีนี้มาประกาศอาร์เรย์เป็นตัวแปรและเก็บข้อมูลประเภทต่างๆ เช่น สตริง วันที่ แบบยาว จำนวนเต็ม ในอาร์เรย์เดียว
ตัวอย่าง:
Sub arrayVariant() Dim arrayData(3) As Variant arrayData(0) = "Vikram Vikrant" arrayData(1) = 411234567890# arrayData(2) = 38 arrayData(3) = "06-09-1972" MsgBox "Details of person " & arrayData(0) & " is " & " Phone No " & arrayData(1) & " ,Id " & arrayData(2) & " ,DOB " & arrayData(3) End Sub
วิธีอาร์เรย์ VBA
มีหลายวิธีในอาร์เรย์ VBA ที่จะช่วยเราทำงานต่างๆ ตามที่ระบุไว้ด้านล่าง
ส. ไม่ใช่ | ชื่อ | ไวยากรณ์ | คำอธิบาย |
---|---|---|---|
1 | อาร์เรย์ | อาร์เรย์(arglist) | แปลงตัวแปรปกติ ตัวแปรเป็นอาร์เรย์ |
2 | 26 ลบลบชื่ออาร์เรย์ | ใช้เพื่อเริ่มต้นอาร์เรย์ขนาดคงที่อีกครั้ง และเพิ่มหน่วยความจำสำหรับไดนามิกarray. | |
3 | IsArray | IsArray (ชื่อตัวแปร) | กำหนดว่า ตัวแปรเป็นอาร์เรย์ |
4 | Lbound | LBound( ArrayName, [Dimension] ) | ส่งคืนตัวห้อยต่ำสุด ของอาร์เรย์ |
5 | Ubound | UBound( ArrayName , [Dimension] ) | ส่งคืนตัวห้อยสูงสุด ของอาร์เรย์ |
6 | แยก | แยก (นิพจน์, [ ตัวคั่น, [ ลิมิต, [ เปรียบเทียบ ]]]) | แบ่งสตริงออกเป็นหลายสตริงย่อยและส่งกลับค่าอาร์เรย์ที่เป็นศูนย์ |
7 | เข้าร่วม | เข้าร่วม(sourcearray, [ delimiter ]) | รวมสตริงย่อยหลายรายการในอาร์เรย์และส่งกลับค่าสตริง . |
8 | ตัวกรอง | ตัวกรอง (sourcearray, match, [ include, [ compare ]]) | ตัวกรองจะช่วยให้เราค้นหา การจับคู่ที่ระบุจากอาร์เรย์ |
เรามาพูดถึงรายละเอียดแต่ละรายการพร้อมตัวอย่าง
#1) อาร์เรย์
มาประกาศตัวแปรแบบปกติและใช้เป็นอาร์เรย์กัน เมื่อต้องการเปลี่ยนตัวแปรตัวแปรปกติเป็นอาร์เรย์ เราจำเป็นต้องใช้ฟังก์ชัน ARRAY ดังตัวอย่างด้านล่าง
ฟังก์ชันอาร์เรย์ยอมรับอาร์กิวเมนต์ที่มีค่าที่คั่นด้วยเครื่องหมายจุลภาค . ค่าเหล่านี้ถูกกำหนดให้เป็นองค์ประกอบของอาร์เรย์
Sub variantArray() Dim varData As Variant varData = Array("Mon Bel", "+61 112334123", 567, "06-09-1972") MsgBox "Details of person " & varData(0) & " is " & " Phone No " & varData(1) & " ,Id " & varData(2) & " ,DOB " & varData(3) End Sub
คุณต้องระบุตัวแปรอาร์เรย์โดยใช้ดัชนีดังนั้นในตัวอย่างข้างต้น ค่าจะถูกเรียกเป็น varData(0) varData(2) varData(3)
#2) Erase
ฟังก์ชันนี้จะลบค่าทั้งหมดที่ป้อนสำหรับ อาร์เรย์ขนาดคงที่และจะเพิ่มพื้นที่หน่วยความจำสำหรับอาร์เรย์แบบไดนามิก
ไวยากรณ์: Erase arrayname
Erase มีลักษณะการทำงานที่แตกต่างกันสำหรับประเภทข้อมูลที่แตกต่างกันตามที่กำหนด ด้านล่าง
- สำหรับตัวเลขคงที่: ค่าทั้งหมดจะถูกรีเซ็ตเป็นศูนย์
- สำหรับประเภทข้อมูลสตริงคงที่: ค่าทั้งหมดจะถูกรีเซ็ตเป็นความยาวศูนย์
- สำหรับไดนามิกอาร์เรย์: เพิ่มหน่วยความจำที่ใช้โดยอาร์เรย์
ตัวอย่าง :
Sub eraseExample() Dim NumArray(3) As Integer Dim decArray(2) As Double Dim strArray(2) As String NumArray(0) = 12345 decArray(1) = 34.5 strArray(1) = "Erase Function" Dim DynaArray() ReDim DynaArray(3) MsgBox " Values before Erase " & (NumArray(0)) & "," & (decArray(1)) & " , " & (strArray(1)) Erase NumArray Erase decArray Erase strArray Erase DynaArray ' Free the memory ' All values are erased. MsgBox " Values after Erase " & NumArray(0) & "," & decArray(1) & " , " & strArray(1) End Sub
ผลลัพธ์ก่อนใช้ฟังก์ชัน Erase
ผลลัพธ์หลังการใช้ Erase 3
#3) IsArray
ฟังก์ชันนี้ใช้เพื่อระบุว่าตัวแปรอินพุตที่กำหนดเป็นอาร์เรย์หรือไม่ มันจะคืนค่าจริงหากตัวแปรที่ป้อนเป็นจริง มิเช่นนั้นจะส่งกลับค่าเท็จ
ไวยากรณ์ : IsArray (ชื่อตัวแปร)
ตัวอย่าง:
Sub isArrayTest() Dim arr1, arr2 As Variant arr1 = Array("Jan", "Feb", "Mar") arr2 = "12345" MsgBox ("Is arr1 an Array : " & IsArray(arr1)) MsgBox ("Is arr2 an Array : " & IsArray(arr2)) End
ผลลัพธ์จาก Msgbox แรก
ผลลัพธ์จาก Msgbox ที่สอง
#4) Lbound
ส่งคืนตัวห้อยต่ำสุดของอาร์เรย์ที่ระบุเป็นอาร์กิวเมนต์สำหรับฟังก์ชัน Lbound
ไวยากรณ์: LBound( ArrayName, [Dimension] )
ArrayName คือชื่อของอาร์เรย์
Dimension คือค่าจำนวนเต็มที่ไม่บังคับ หากอาร์เรย์มีหลายมิติ คุณสามารถระบุเป็นมิติข้อมูลที่คุณต้องการกำหนด Lbound
ตัวอย่าง:
Sub lboundTest() Dim Result1, Result2, Result3 Dim ArrayValue(1 To 10, 5 To 15, 10 To 20) ' Declare array variables. Dim Arraywithoutlbound(10) Result1 = LBound(ArrayValue, 1) ' Returns 1. Result2 = LBound(ArrayValue, 3) ' Returns 10. Result3 = LBound(Arraywithoutlbound) MsgBox "Lowest subscript in first array " & Result1 & " lowest subscript in 3rd array " & Result2 & " Lowest subscript in Arraywithoutlbound " & Result3 End Sub
#5) Ubound
It ส่งคืนตัวห้อยตัวบนของอาร์เรย์ที่ระบุเป็นอาร์กิวเมนต์ในฟังก์ชัน Ubound
ไวยากรณ์: UBound( ArrayName, [Dimension] )
ArrayName คือชื่อของ อาร์เรย์
มิติข้อมูลคือค่าจำนวนเต็มที่เลือกได้ หากอาร์เรย์มีหลายมิติ คุณสามารถระบุว่าคุณต้องการกำหนดมิติข้อมูลใดใน Ubound
ตัวอย่าง:
Sub UboundTest() Dim Result1, Result2, Result3 Dim ArrayValue(1 To 10, 5 To 15, 10 To 20) ' Declare array variables. Dim ArraywithoutUbound(10) Result1 = UBound(ArrayValue, 1) Result2 = UBound(ArrayValue, 3) Result3 = UBound(ArraywithoutUbound) MsgBox "Lowest subscript in first array " & Result1 & " lowest subscript in 3rd array " & Result2 & " Lowest subscript in Arraywithoutlbound " & Result3 End Sub
#6) แยก
ส่งคืนอาร์เรย์ที่มีจำนวนสตริงย่อยที่ได้มาจากสตริงทั้งหมดที่กำหนด
Syntax: Split(expression, [ delimiter, [ limit, [ compare ]]])
- Expression: นี่คือสตริงทั้งหมดที่จะใช้ สร้างสตริงย่อย
- ตัวคั่น: การใช้ตัวคั่นที่ระบุ สตริงย่อยจะถูกสร้างขึ้น หากไม่ได้กล่าวถึง จะถือว่าช่องว่างเป็นตัวคั่น
- ขีดจำกัด: จำนวนของสตริงย่อยที่จะส่งคืน
- เปรียบเทียบ: หลังจาก มีการสร้างสตริงย่อย คุณสามารถใช้ตัวเลือกการเปรียบเทียบต่างๆ เพื่อทดสอบผลลัพธ์
ตัวอย่าง: ในตัวอย่างด้านล่าง เราใช้ตัวคั่นเป็น – และจำกัดเป็น 3
ดังนั้น ฟังก์ชันแยกจะแยกสตริงทั้งหมดออกเป็นสตริงย่อยตามตัวคั่น แต่เรายังได้กล่าวถึงขีดจำกัดเป็น 3 ดังนั้นสตริงย่อยจะไม่เกิดขึ้นหลังจากขีดจำกัด 3 ดังนั้นตัวคั่นสุดท้าย –จะถูกข้ามไป
Sub splitExample() Dim MyString As String Dim Result() As String Dim DisplayText As String MyString = "This is the example for-VBA-Split-Function" Result = Split(MyString, "-",3) MsgBox Result(0) & vbNewLine & Result(1) & vbNewLine & Result(2) & vbNewLine & Result(3) End Sub
#7) เข้าร่วม
นี่เป็นเพียงการย้อนกลับของการแยก การเข้าร่วมจะสร้างหนึ่งสตริงโดยการรวมสตริงย่อยหลายรายการเข้าด้วยกัน
ไวยากรณ์: เข้าร่วม (sourcearray, [ ตัวคั่น ])
Sourcearray: อาร์เรย์ของสตริงหนึ่งมิติที่คุณต้องการรวมเข้าด้วยกัน
ตัวคั่น: ตัวคั่นที่ระบุจะถูกเพิ่มหลังจากแต่ละสตริงในขณะที่เข้าร่วม
ตัวอย่าง:
Sub joinExample() Dim Result As String Dim dirarray(0 To 2) As String dirarray(0) = "D:" dirarray(1) = "SoftwareTestingHelp" dirarray(2) = "Arrays" Result = Join(dirarray, "\") MsgBox "Date after joining " & Result End Sub
ค่าทั้ง 3 ค่าคือ ร่วม และ \ อยู่ระหว่างแต่ละคำ ดังที่เราได้กล่าวถึง \ เป็นตัวคั่น
#8) ตัวกรอง
ตัวกรองจะช่วยให้เราสามารถ ค้นหาการจับคู่ที่ระบุจากอาร์เรย์ ตามเกณฑ์ตัวกรอง ระบบจะส่งคืนชุดย่อยของอาร์เรย์สตริง
ไวยากรณ์: ตัวกรอง(sourcearray, การจับคู่, [ รวม, [ เปรียบเทียบ ]])
ตัวอย่าง:
Sub filterExample() Dim Mystring As Variant Mystring = Array("Software Testing", "Testing help", "Software help") filterString = Filter(Mystring, "help") MsgBox "Found " & UBound(Mystring) - LBound(Mystring) + 1 & " words matching the criteria " End Sub
ตัวอย่างนี้จะค้นหาคำว่า "help" ในสตริงอาร์เรย์ทั้งหมดโดยใช้ฟังก์ชันตัวกรอง
คำถามที่พบบ่อย
Q #1) วิธีรับความยาวของอาร์เรย์ใน VBA
คำตอบ: วิธีรับความยาวของ อาร์เรย์เราใช้ฟังก์ชัน Ubound ฟังก์ชันนี้จะให้ตัวห้อยตัวบนของอาร์เรย์ที่ระบุ
Q #2) จะประกาศอาร์เรย์ใน VBA ได้อย่างไร
คำตอบ: หนึ่ง- มีการประกาศอาร์เรย์มิติตามที่แสดงด้านล่าง
Dim arrayname(lowerbound To UpperBound) As DataType
Example: Dim Myarray(0 To 2) As Integer
สองมิติ