อาร์เรย์ใน Excel VBA: ประเภทและวิธีการใช้งาน พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 📦 แนวคิดเกี่ยวกับอาร์เรย์: ตำแหน่งหน่วยความจำที่มีชื่อเดียวซึ่งเก็บค่าหลายค่าที่มีชนิดข้อมูลเดียวกัน โดยคั่นด้วยดัชนี
  • 🎯 ข้อดี: อาร์เรย์ช่วยจัดกลุ่มข้อมูลที่เกี่ยวข้องกัน ลดจำนวนตัวแปร และทำให้การดึงและจัดเรียงข้อมูลทำได้เร็วขึ้น
  • 📌 อาร์เรย์คงที่: กำหนดขนาดคงที่ เช่น Dim ArrayMonth(12) As String เมื่อทราบจำนวนองค์ประกอบ
  • 🔄 อาร์เรย์แบบไดนามิก: ประกาศให้เป็นค่าว่างด้วย Dim ArrayMonth() และกำหนดขนาดในภายหลังโดยใช้ ReDim เมื่อไม่ทราบจำนวนองค์ประกอบ
  • 📐 ขนาด: อาร์เรย์ใช้ดัชนีหนึ่ง สอง หรือมากกว่านั้นเพื่อจำลองรายการเดี่ยว ตาราง หรือข้อมูลหลายระดับ
  • 🧪 ตัวอย่างการทำงาน: ปุ่มคำสั่งจะโหลดชื่อเครื่องดื่มสี่รายการจากอาร์เรย์ลงในเซลล์ของเวิร์กชีตโดยใช้ Sheet1.Cells

อาร์เรย์ Excel VBA

อาร์เรย์ VBA คืออะไร

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

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

บทช่วยสอนนี้ถือว่าคุณกำลังใช้งานอยู่ Microsoft Excel เวอร์ชัน 2013 ความรู้ยังคงนำไปใช้กับเวอร์ชันอื่น ๆ Microsoft เอ็กเซลอีกด้วย

ข้อดีของอาร์เรย์คืออะไร?

ก่อนที่จะเขียนโค้ดเกี่ยวกับอาร์เรย์ การเข้าใจว่าทำไมการใช้อาร์เรย์จึงมีประโยชน์นั้นเป็นสิ่งสำคัญ ต่อไปนี้คือประโยชน์บางประการของฟังก์ชันอาร์เรย์ใน VBA

  1. จัดกลุ่มข้อมูลที่เกี่ยวข้องกับตรรกะเข้าด้วยกัน สมมติว่าคุณต้องการจัดเก็บรายชื่อนักเรียน คุณสามารถใช้ตัวแปรอาร์เรย์เดี่ยวที่มีตำแหน่งแยกสำหรับหมวดหมู่ของนักเรียน เช่น Kinder Garden ประถมศึกษา มัธยมศึกษา มัธยมปลาย ฯลฯ
  2. อาร์เรย์ทำให้ง่ายต่อการเขียนโค้ดที่สามารถบำรุงรักษาได้ สำหรับข้อมูลที่เกี่ยวข้องกันทางตรรกะเดียวกัน จะช่วยให้คุณสามารถกำหนดตัวแปรตัวเดียว แทนที่จะกำหนดตัวแปรมากกว่าหนึ่งตัว
  3. ประสิทธิภาพที่ดีขึ้น - เมื่อกำหนดอาร์เรย์แล้ว การเรียกค้น จัดเรียง และแก้ไขข้อมูลก็จะเร็วขึ้น

ประเภทของอาร์เรย์ใน VBA

VBA รองรับอาร์เรย์สองประเภทคือ

  • คงที่ – อาร์เรย์ประเภทนี้มีจำนวนองค์ประกอบที่กำหนดไว้ล่วงหน้าคงที่ซึ่งสามารถจัดเก็บได้ ไม่สามารถเปลี่ยนขนาดของชนิดข้อมูลของ Static Array ได้ สิ่งเหล่านี้มีประโยชน์เมื่อคุณต้องการทำงานกับเอนทิตีที่ทราบ เช่น จำนวนวันในหนึ่งสัปดาห์ เพศ ฯลฯตัวอย่างเช่น: Dim ArrayMonth(12) เป็นสตริง
  • พลวัต – อาร์เรย์ประเภทนี้ไม่มีจำนวนองค์ประกอบที่กำหนดไว้ล่วงหน้าคงที่ซึ่งสามารถจัดเก็บได้ สิ่งเหล่านี้มีประโยชน์เมื่อทำงานกับเอนทิตีที่คุณไม่สามารถกำหนดหมายเลขล่วงหน้าได้ตัวอย่างเช่น: Dim ArrayMonth() เป็นตัวแปร

เมื่อคุณทราบแล้วว่าประเภทใดเหมาะสมกับข้อมูลของคุณ ขั้นตอนต่อไปคือไวยากรณ์การประกาศสำหรับแต่ละประเภท

ไวยากรณ์ในการประกาศอาร์เรย์

อาร์เรย์แบบคงที่

ไวยากรณ์สำหรับการประกาศ คงที่ อาร์เรย์เป็นดังนี้:

Dim arrayName (n) as datatype

ที่นี่

Code การกระทำ
ประเภทข้อมูล Dim arrayName (n)
  1. ประกาศตัวแปรอาร์เรย์ชื่อ arrayName โดยมีขนาด n และมีประเภทข้อมูล Size หมายถึงจำนวนองค์ประกอบที่อาร์เรย์สามารถจัดเก็บได้

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

ไวยากรณ์สำหรับการประกาศ ไดนามิค อาร์เรย์เป็นดังนี้:

Dim arrayName() as datatype
ReDim arrayName(4)

ที่นี่

Code การกระทำ
ประเภทข้อมูล Dim arrayName ()
  1. ประกาศตัวแปรอาร์เรย์ที่เรียกว่า arrayName โดยไม่ระบุจำนวนองค์ประกอบ
ReDim ชื่ออาร์เรย์(4)
  1. มันระบุขนาดอาร์เรย์หลังจากกำหนดอาร์เรย์แล้ว

ขนาดอาร์เรย์

อาร์เรย์สามารถเป็นหนึ่งมิติ สองมิติ หรือหลายมิติ

  • มิติหนึ่ง: ในมิตินี้ อาร์เรย์ใช้เพียงดัชนีเดียวเท่านั้น เช่น จำนวนคนในแต่ละวัย
  • สองมิติ: ในมิตินี้ อาร์เรย์ใช้ดัชนี 2 รายการ เช่น จำนวนนักเรียนในแต่ละชั้นเรียน โดยจะต้องมีจำนวนชั้นเรียนและจำนวนนักเรียนในแต่ละชั้นเรียน
  • หลายมิติ: ในมิตินี้ อาร์เรย์ใช้ดัชนีมากกว่าสองดัชนี เช่น อุณหภูมิในเวลากลางวัน ( 30, 40, 20).

วิธีใช้อาร์เรย์ใน Excel VBA

เมื่อเราเข้าใจทฤษฎีแล้ว เราสามารถนำอาร์เรย์ไปใช้งานในเวิร์กบุ๊กจริงได้ เราจะสร้างแอปพลิเคชันง่ายๆ แอปพลิเคชันนี้จะเติมข้อมูลลงในชีต Excel จากตัวแปรอาร์เรย์ ในตัวอย่าง VBA Array นี้ เราจะทำสิ่งต่อไปนี้

  • สร้างใหม่ Microsoft เวิร์กบุ๊ก Excel และบันทึกเป็นเวิร์กบุ๊กที่เปิดใช้งานแมโคร Excel (*.xlsm)
  • เพิ่มปุ่มคำสั่งลงในสมุดงาน
  • ตั้งค่าคุณสมบัติชื่อและคำอธิบายของปุ่มคำสั่ง
  • การเขียนโปรแกรม VBA ที่เติมแผ่นงาน Excel

ให้ทำแบบฝึกหัดนี้ทีละขั้นตอน

ขั้นตอนที่ 1 - สร้างสมุดงานใหม่

  1. จุดเปิด Microsoft Excel
  2. บันทึกเวิร์กบุ๊กใหม่เป็น VBA Arrays.xlsm

ขั้นตอนที่ 2 - เพิ่มปุ่มคำสั่ง

หมายเหตุ ส่วนนี้จะถือว่าคุณคุ้นเคยกับกระบวนการสร้างอินเทอร์เฟซใน Excel หากคุณไม่คุ้นเคย อ่านบทช่วยสอน การควบคุมฟอร์ม VBA Excel และการควบคุม ActiveX- มันจะแสดงวิธีสร้างอินเทอร์เฟซ

  1. เพิ่มปุ่มคำสั่งลงในแผ่นงาน

ใช้อาร์เรย์ใน Excel VBA

  1. ตั้งค่าคุณสมบัติชื่อเป็นcmdLoadBeverages
  2. ตั้งค่าคุณสมบัติคำอธิบายภาพเป็นโหลดเครื่องดื่ม

GUI ของคุณควรเป็นดังนี้

ใช้อาร์เรย์ใน Excel VBA

ขั้นตอนที่ 3 – บันทึกไฟล์

  1. คลิกที่ปุ่มบันทึกเป็น
  2. เลือกสมุดงานที่เปิดใช้งานแมโคร Excel (*.xlsm) ดังที่แสดงในภาพด้านล่าง

ใช้อาร์เรย์ใน Excel VBA

ขั้นตอนที่ 4 – เขียนโค้ด

ตอนนี้เราจะเขียนโค้ดสำหรับแอปพลิเคชันของเรา

  1. คลิกขวาที่ปุ่ม Load Beverages และเลือกรหัสมุมมอง
  2. เพิ่มโค้ดต่อไปนี้ลงในเหตุการณ์คลิกของ cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

ที่นี่

Code การกระทำ
เครื่องดื่มติ่มซำ (1 ถึง 4) เป็นสตริง
  • ประกาศตัวแปรอาร์เรย์ชื่อ Drinks ดัชนีอาร์เรย์แรกคือ 1 และดัชนีอาร์เรย์สุดท้ายคือ 4
เครื่องดื่ม(1) = “เป๊ปซี่”
  • กำหนดค่า Pepsi ให้กับองค์ประกอบอาร์เรย์แรก รหัสที่คล้ายกันอื่น ๆ ทำเช่นเดียวกันกับองค์ประกอบอื่น ๆ ในอาร์เรย์
Sheet1.Cells(1, 1).Value = “เครื่องดื่มที่ฉันชอบ”
  • เขียนค่า My Favorite Beverages ในเซลล์ที่อยู่ A1 Sheet1 อ้างอิงถึงชีต และ Cells(1,1) อ้างอิงถึงแถวหมายเลข 1 และคอลัมน์ 1 (B)
Sheet1.เซลล์(2, 1).ค่า = เครื่องดื่ม(1)
  • เขียนค่าขององค์ประกอบอาร์เรย์ที่มีดัชนี 1 ไปยังแถวหมายเลข 1 ของคอลัมน์ XNUMX

การทดสอบแอปพลิเคชันของเรา

เมื่อเขียนโค้ดเสร็จแล้ว ขั้นตอนสุดท้ายคือการเรียกใช้ปุ่มและตรวจสอบว่าอาร์เรย์แสดงผลเต็มแผ่นงานหรือไม่ เลือกแท็บนักพัฒนา และตรวจสอบให้แน่ใจว่าปุ่มโหมดออกแบบปิดอยู่ ตัวบ่งชี้คือพื้นหลังจะเป็นสีขาว ไม่ใช่สีอื่น (สีเขียว) (ดูภาพด้านล่าง)

ทดสอบแอปพลิเคชันใน Excel VBA

คลิกที่ปุ่มโหลดเครื่องดื่ม

คุณจะได้รับผลลัพธ์ดังต่อไปนี้

ทดสอบแอปพลิเคชันใน Excel VBA

ดาวน์โหลด Excel ที่มีโค้ดด้านบน

ดาวน์โหลดไฟล์ Excel ด้านบน Code

คำถามที่พบบ่อย

อาร์เรย์แบบคงที่ (static array) จะมีขนาดคงที่ที่กำหนดไว้ตั้งแต่การประกาศ เช่น Dim Arr(12) ส่วนอาร์เรย์แบบไดนามิก (dynamic array) จะประกาศให้ว่างเปล่าด้วย Dim Arr() และปรับขนาดในภายหลังโดยใช้ ReDim เมื่อไม่ทราบจำนวนองค์ประกอบล่วงหน้า

ReDim ใช้สำหรับกำหนดหรือเปลี่ยนแปลงขนาดของอาร์เรย์แบบไดนามิกหลังจากที่ได้ประกาศแล้ว การเพิ่มคีย์เวิร์ด Preserve เช่น ReDim Preserve Arr(10) จะคงค่าที่มีอยู่ไว้ในขณะที่ทำการปรับขนาด หากไม่มี Preserve ค่าที่จัดเก็บไว้ทั้งหมดจะถูกล้างออก

ใช้ฟังก์ชัน LBound และ UBound ฟังก์ชัน LBound จะคืนค่าดัชนีต่ำสุด และฟังก์ชัน UBound จะคืนค่าดัชนีสูงสุด จำนวนองค์ประกอบจะเท่ากับ UBound(Arr) ลบด้วย LBound(Arr) บวกหนึ่ง ซึ่งใช้ได้ทั้งกับอาร์เรย์แบบคงที่และแบบไดนามิก

ใช่แล้ว ผู้ช่วย AI อย่างเช่น Copilot สามารถสร้างการประกาศอาร์เรย์และลูปจากคำขอธรรมดาได้ เช่น การโหลดชื่อผลิตภัณฑ์สิบรายการลงในคอลัมน์ นักพัฒนาซอฟต์แวร์เพียงแค่คัดลอกโค้ดไปวางในโปรแกรมแก้ไข และทดสอบกับสำเนาของเวิร์กบุ๊ก

ใช่แล้ว ผู้ช่วย AI จะอ่านข้อผิดพลาด “Subscript out of range” และโค้ด จากนั้นจะชี้ไปยังดัชนีที่เกินขอบเขตของอาร์เรย์และแนะนำวิธีแก้ไข เช่น การปรับขนาดของ ReDim หรือตัวนับลูป นักพัฒนาจะนำไปใช้และทดสอบอีกครั้ง

สรุปโพสต์นี้ด้วย: