อาร์เรย์ใน Visual Basic สำหรับแอปพลิเคชัน

อาร์เรย์ใน Visual Basic for Application เป็นโครงสร้างที่โดยทั่วไปจะจัดเก็บชุดของตัวแปรที่เกี่ยวข้องที่เป็นประเภทเดียวกัน รายการอาร์เรย์สามารถเข้าถึงได้โดยดัชนีตัวเลข

ตัวอย่างเช่น มีทีมงาน 20 คนที่จำเป็นต้องบันทึกชื่อเพื่อใช้ในภายหลังในโค้ด VBA เราสามารถประกาศตัวแปร 20 ตัวเพื่อเก็บชื่อแต่ละชื่อได้ดังนี้:

Dim Team_Member1 เป็นสตริง Dim Team_Member2 เป็นสตริง ... Dim Team_Member20 เป็นสตริง

แต่คุณสามารถใช้วิธีที่ง่ายและเป็นระเบียบมากขึ้นได้ - เก็บรายชื่อสมาชิกในทีมไว้ในอาร์เรย์ 20 ตัวแปรเช่น เชือก:

Dim Team_Members(1 ถึง 20) As String

ในบรรทัดที่แสดงด้านบน เราได้ประกาศอาร์เรย์ ทีนี้ลองเขียนค่าลงในแต่ละองค์ประกอบดังนี้:

Team_Members(1) = "จอห์น สมิธ"

ข้อได้เปรียบเพิ่มเติมของการจัดเก็บข้อมูลในอาร์เรย์ เมื่อเปรียบเทียบกับการใช้ตัวแปรแยกกัน จะเห็นได้ชัดเจนเมื่อจำเป็นต้องดำเนินการแบบเดียวกันกับแต่ละองค์ประกอบของอาร์เรย์ หากชื่อของสมาชิกในทีมถูกเก็บไว้ในตัวแปรแยกกัน 20 ตัว การเขียนแต่ละครั้งจะต้องเขียนโค้ด 20 บรรทัดเพื่อดำเนินการแบบเดียวกันในแต่ละรายการ อย่างไรก็ตาม หากชื่อถูกเก็บไว้ในอาร์เรย์ คุณสามารถดำเนินการตามที่ต้องการกับแต่ละชื่อได้โดยใช้การวนซ้ำแบบง่าย

วิธีการทำงานแสดงไว้ด้านล่างพร้อมตัวอย่างโค้ดที่พิมพ์ชื่อสมาชิกในทีมแต่ละคนตามลำดับในเซลล์ของคอลัมน์ A แผ่นงาน Excel ที่ใช้งานอยู่

สำหรับ i = 1 ถึง 20 Cells(i,1).Value = Team_Members(i) ถัดไป i

เห็นได้ชัดว่าการทำงานกับอาร์เรย์ที่เก็บชื่อไว้ 20 ชื่อนั้นยุ่งยากน้อยกว่าและแม่นยำกว่าการใช้ตัวแปรแยกกัน 20 ตัว แต่ถ้าชื่อเหล่านี้ไม่ใช่ 20 แต่เป็น 1000 และถ้านอกจากนี้จำเป็นต้องเก็บนามสกุลและนามสกุลไว้ต่างหาก! เป็นที่ชัดเจนว่าในไม่ช้าการจัดการปริมาณข้อมูลดังกล่าวในโค้ด VBA จะไม่สามารถทำได้อย่างสมบูรณ์โดยไม่ได้รับความช่วยเหลือจากอาร์เรย์

อาร์เรย์หลายมิติใน Excel Visual Basic

อาร์เรย์ Visual Basic ที่กล่าวถึงข้างต้นถือเป็นหนึ่งมิติ ซึ่งหมายความว่าพวกเขาเก็บรายชื่ออย่างง่าย อย่างไรก็ตาม อาร์เรย์สามารถมีหลายมิติได้ ตัวอย่างเช่น อาร์เรย์สองมิติสามารถเปรียบเทียบกับตารางค่าได้

สมมติว่าคุณต้องการบันทึกตัวเลขยอดขายรายวันของเดือนมกราคมสำหรับ 5 ทีมที่แตกต่างกัน ซึ่งจะต้องใช้อาร์เรย์สองมิติที่ประกอบด้วยเมตริก 5 ชุดเป็นเวลา 31 วัน มาประกาศอาร์เรย์ดังนี้:

Dim Jan_Sales_Figures(1 To 31, 1 To 5) เป็นสกุลเงิน

ในการเข้าถึงองค์ประกอบอาร์เรย์ Jan_Sales_ฟิกเกอร์คุณต้องใช้ดัชนีสองตัวที่ระบุวันของเดือนและหมายเลขคำสั่ง ตัวอย่างเช่น ที่อยู่ขององค์ประกอบที่มีตัวเลขยอดขายสำหรับ 2-โอ้ ทีมสำหรับ วันที่ 15 มกราคมจะเขียนดังนี้:

Jan_Sales_ฟิกเกอร์(15, 2)

ในทำนองเดียวกัน คุณสามารถประกาศอาร์เรย์ที่มี 3 มิติขึ้นไปได้ เพียงเพิ่มมิติเพิ่มเติมในการประกาศอาร์เรย์ และใช้ดัชนีเพิ่มเติมเพื่ออ้างอิงถึงองค์ประกอบของอาร์เรย์นี้

การประกาศอาร์เรย์ใน Excel Visual Basic

ก่อนหน้านี้ในบทความนี้ เราได้ดูตัวอย่างการประกาศอาร์เรย์ใน VBA หลายตัวอย่างแล้ว แต่หัวข้อนี้สมควรได้รับการพิจารณาอย่างใกล้ชิด ดังที่แสดงไว้ อาร์เรย์หนึ่งมิติสามารถประกาศได้ดังนี้:

Dim Team_Members(1 ถึง 20) As String

การประกาศดังกล่าวบอกคอมไพเลอร์ VBA ว่า array ทีม_สมาชิก ประกอบด้วยตัวแปร 20 ตัวที่สามารถเข้าถึงได้ที่ดัชนีตั้งแต่ 1 ถึง 20 อย่างไรก็ตาม เราอาจนึกถึงการนับตัวแปรอาร์เรย์ของเราตั้งแต่ 0 ถึง 19 ซึ่งในกรณีนี้ อาร์เรย์ควรได้รับการประกาศดังนี้:

Dim Team_Members(0 ถึง 19) As String

ตามจริงแล้ว การกำหนดหมายเลขขององค์ประกอบอาร์เรย์เริ่มต้นจาก 0 และในการประกาศอาร์เรย์ ดัชนีเริ่มต้นอาจไม่ได้ระบุเลยเช่นนี้

Dim Team_Members(19) เป็นสตริง

คอมไพเลอร์ VBA จะถือว่ารายการดังกล่าวเป็นการประกาศอาร์เรย์ 20 องค์ประกอบที่มีดัชนีตั้งแต่ 0 ถึง 19

ใช้กฎเดียวกันเมื่อประกาศอาร์เรย์ Visual Basic แบบหลายมิติ ดังที่แสดงไว้ในตัวอย่างหนึ่งแล้ว เมื่อประกาศอาร์เรย์สองมิติ ดัชนีของมิติข้อมูลจะถูกคั่นด้วยเครื่องหมายจุลภาค:

Dim Jan_Sales_Figures(1 To 31, 1 To 5) เป็นสกุลเงิน

อย่างไรก็ตาม หากคุณไม่ได้ระบุดัชนีเริ่มต้นสำหรับทั้งสองมิติของอาร์เรย์ และประกาศดังนี้:

Dim Jan_Sales_Figures(31, 5) เป็นสกุลเงิน

จากนั้นรายการนี้จะถือว่าเป็นอาร์เรย์สองมิติ มิติแรกที่ประกอบด้วยองค์ประกอบ 32 รายการที่มีดัชนีตั้งแต่ 0 ถึง 31 และมิติที่สองของอาร์เรย์ประกอบด้วยองค์ประกอบ 6 รายการที่มีดัชนีตั้งแต่ 0 ถึง 5

ไดนามิกอาร์เรย์

อาร์เรย์ทั้งหมดในตัวอย่างข้างต้นมีจำนวนมิติคงที่ อย่างไรก็ตาม ในหลายกรณี เราไม่ทราบล่วงหน้าว่าอาร์เรย์ของเราควรมีขนาดเท่าใด เราสามารถออกจากสถานการณ์ได้โดยการประกาศอาร์เรย์ขนาดใหญ่ ซึ่งขนาดจะใหญ่กว่าที่จำเป็นสำหรับงานของเราอย่างแน่นอน แต่วิธีแก้ปัญหาดังกล่าวจะต้องใช้หน่วยความจำเพิ่มเติมจำนวนมากและอาจทำให้โปรแกรมทำงานช้าลงได้ มีทางออกที่ดีกว่า เราสามารถใช้อาร์เรย์ไดนามิก ซึ่งเป็นอาร์เรย์ที่สามารถกำหนดขนาดและเปลี่ยนแปลงได้หลายครั้งระหว่างการดำเนินการแมโคร

อาร์เรย์ไดนามิกถูกประกาศด้วยวงเล็บว่างดังนี้:

Dim Team_Members() เป็นสตริง

ถัดไป คุณจะต้องประกาศขนาดของอาร์เรย์ในระหว่างการเรียกใช้โค้ดโดยใช้นิพจน์ เรดดิม:

ReDim Team_Members (1 ถึง 20)

และหากในระหว่างการเรียกใช้โค้ด คุณต้องเปลี่ยนขนาดของอาร์เรย์อีกครั้ง คุณสามารถใช้นิพจน์ ReDim ได้อีกครั้ง:

ถ้า Team_Size > 20 แล้ว ReDim Team_Members (1 ถึง Team_Size) สิ้นสุด If

โปรดทราบว่าการปรับขนาดอาร์เรย์ไดนามิกด้วยวิธีนี้จะทำให้สูญเสียค่าทั้งหมดที่เก็บไว้ในอาร์เรย์ ในการเก็บข้อมูลไว้ในอาร์เรย์ คุณต้องใช้คีย์เวิร์ด อนุรักษ์ดังต่อไปนี้:

ถ้า Team_Size > 20 แล้ว ReDim Preserve Team_Members (1 ถึง Team_Size) สิ้นสุด ถ้า

ขออภัยคำหลัก อนุรักษ์ สามารถใช้เพื่อเปลี่ยนขอบเขตบนของมิติอาร์เรย์เท่านั้น ขอบล่างของอาร์เรย์ไม่สามารถเปลี่ยนแปลงได้ด้วยวิธีนี้ นอกจากนี้ หากอาร์เรย์มีหลายมิติ ให้ใช้คีย์เวิร์ด อนุรักษ์, เฉพาะมิติสุดท้ายของอาร์เรย์เท่านั้นที่สามารถปรับขนาดได้

เขียนความเห็น