วัตถุช่วง Excel VBA
⚡ สรุปอย่างชาญฉลาด
อ็อบเจ็กต์ Range ใน Excel VBA แทนเซลล์หนึ่งเซลล์หรือกลุ่มเซลล์บนเวิร์กชีต หน้านี้จะอธิบายลำดับชั้นของอ็อบเจ็กต์ คุณสมบัติของ Range และ Cells การเลือกและการอ้างอิงเซลล์ การอ่านและการเขียนค่า และคุณสมบัติ Offset

ช่วง VBA คืออะไร
VBA Range Object แสดงถึงเซลล์หรือหลายเซลล์ในแผ่นงาน Excel ของคุณ เป็นวัตถุที่สำคัญที่สุดของ Excel VBA โดยใช้วัตถุช่วง Excel VBA คุณสามารถอ้างถึง
- เซลล์เดียว
- แถวหรือคอลัมน์ของเซลล์
- การเลือกเซลล์
- ช่วงสามมิติ
ดังที่เราได้กล่าวถึงในบทเรียนก่อนหน้านี้ VBA ใช้สำหรับบันทึกและเรียกใช้งาน แมโครแต่ VBA จะระบุได้อย่างไรว่าข้อมูลส่วนใดในชีตที่ต้องดำเนินการ? นี่คือจุดที่ Range Objects ใน VBA มีประโยชน์
รู้เบื้องต้นเกี่ยวกับการอ้างอิงวัตถุใน VBA
การอ้างอิงวัตถุช่วง VBA ของ Excel และตัวระบุวัตถุ
- ตัวระบุวัตถุ: ใช้สำหรับอ้างอิงวัตถุ โดยจะระบุสมุดงานหรือแผ่นงานที่คุณอ้างถึง
เพื่อจัดการค่าของเซลล์เหล่านี้ อสังหาริมทรัพย์ และ วิธีการ ถูกนำมาใช้
- อสังหาริมทรัพย์: คุณสมบัติจัดเก็บข้อมูลเกี่ยวกับวัตถุ
- วิธีการ: วิธีการคือการกระทำของวัตถุที่มันจะดำเนินการ ออบเจ็กต์ช่วงสามารถดำเนินการต่างๆ เช่น เลือก คัดลอก ล้าง เรียงลำดับ ฯลฯ
VBA ใช้รูปแบบลำดับชั้นของวัตถุในการอ้างอิงถึงวัตถุใน Excel คุณต้องปฏิบัติตามโครงสร้างด้านล่าง โปรดจำไว้ว่า จุด (.) ในที่นี้ใช้เชื่อมต่อวัตถุในแต่ละระดับที่แตกต่างกัน
แอปพลิเคชัน สมุดงาน แผ่นงาน ช่วง
ลำดับชั้นนั้นสามารถเข้าถึงได้ผ่านคุณสมบัติสองอย่าง และคุณสมบัติ Range เป็นคุณสมบัติที่ใช้บ่อยที่สุด
วิธีอ้างอิงถึง Excel VBA Range Object โดยใช้คุณสมบัติ Range
คุณสมบัติช่วงสามารถนำไปใช้กับวัตถุสองประเภทที่แตกต่างกัน
- วัตถุแผ่นงาน
- วัตถุช่วง
ไวยากรณ์สำหรับคุณสมบัติช่วง
- คำหลัก "ช่วง"
- วงเล็บที่ตามหลังคำสำคัญ
- ช่วงเซลล์ที่เกี่ยวข้อง
- คำอ้างอิง (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")
เมื่อคุณอ้างอิงวัตถุ Range ดังที่แสดงด้านบน วัตถุนั้นจะถูกเรียกว่า การอ้างอิงที่มีคุณสมบัติครบถ้วนคุณได้ระบุช่วงข้อมูลที่ต้องการไปยัง Excel อย่างชัดเจนแล้ว รวมถึงชีตและเวิร์กชีตที่ต้องการด้วย
ตัวอย่าง: ข้อความBox แผ่นงาน (“Sheet1”).ช่วง (“A1”).ค่า
การใช้คุณสมบัติ Range คุณสามารถทำงานหลายอย่างเช่น
- อ้างถึงเซลล์เดียวโดยใช้คุณสมบัติช่วง
- อ้างถึงเซลล์เดียวโดยใช้คุณสมบัติ Worksheet.Range
- อ้างถึงทั้งแถวหรือคอลัมน์
- อ้างถึงเซลล์ที่ผสานโดยใช้ Worksheet.Range Property และอื่นๆ อีกมากมาย
ด้วยเหตุนี้จึงจะยาวเกินไปที่จะครอบคลุมสถานการณ์ทั้งหมดสำหรับคุณสมบัติของช่วง สำหรับสถานการณ์ที่กล่าวถึงข้างต้น เราจะสาธิตตัวอย่างเพียงสถานการณ์เดียวเท่านั้น อ้างถึงเซลล์เดียวโดยใช้คุณสมบัติช่วง
อ้างถึงเซลล์เดียวโดยใช้คุณสมบัติ Worksheet.Range
หากต้องการอ้างอิงถึงเซลล์ใดเซลล์หนึ่ง ให้ส่งที่อยู่ของเซลล์นั้นไปยังคุณสมบัติ Range ในรูปแบบสตริงข้อความ
ไวยากรณ์เป็นเรื่องง่าย “พิสัย(”เซลล์”)”
ที่นี่เราจะใช้คำสั่ง ".Select" เพื่อเลือกเซลล์เดียวจากแผ่นงาน
ขั้นตอน 1) ขั้นตอนนี้ ให้เปิดไฟล์ Excel ของคุณ
ขั้นตอน 2) ในขั้นตอนนี้
- คลิกที่
ปุ่ม
- มันจะเปิดหน้าต่างขึ้นมา
- ป้อนชื่อโปรแกรมของคุณที่นี่แล้วคลิกปุ่ม 'ตกลง'
- ระบบจะนำคุณไปยังไฟล์ Excel หลัก จากเมนูด้านบนให้คลิกที่ปุ่มบันทึก 'หยุด' เพื่อหยุดการบันทึกมาโคร
ขั้นตอน 3) ในขั้นตอนถัดไป
- คลิกที่ปุ่มมาโคร
จากเมนูด้านบน มันจะเปิดหน้าต่างด้านล่าง
- ในหน้าต่างนี้ คลิกที่ปุ่ม 'แก้ไข'
ขั้นตอน 4) ขั้นตอนข้างต้นจะเปิดโปรแกรมแก้ไขโค้ด VBA สำหรับไฟล์ชื่อ “Single Cell Range” ป้อนโค้ดตามที่แสดงด้านล่างเพื่อเลือกช่วงเซลล์ “A1” จากชีต Excel
Sub SingleCellRange() Range("A1").Select End Sub
ขั้นตอน 5) ตอนนี้บันทึกไฟล์ และรันโปรแกรมดังภาพด้านล่าง
ขั้นตอน 6) คุณจะเห็นเซลล์ “A1” ถูกเลือกหลังจากการทำงานของโปรแกรม
ในทำนองเดียวกัน คุณสามารถเลือกเซลล์ที่มีชื่อเฉพาะได้ ตัวอย่างเช่น หากคุณต้องการค้นหาเซลล์ที่มีชื่อว่า “Guru99- บทเรียน VBA” คุณต้องรันคำสั่งดังที่แสดงด้านล่าง คำสั่งนี้จะเลือกเซลล์ที่มีชื่อนั้น
พิสัย("Guru99- บทเรียน VBA”) เลือก
หากต้องการใช้ออบเจ็กต์ช่วงอื่น นี่คือตัวอย่างโค้ด
| ช่วงสำหรับการเลือกเซลล์ใน Excel | ประกาศช่วงแล้ว |
|---|---|
| สำหรับแถวเดี่ยว | พิสัย("1:1") |
| สำหรับคอลัมน์เดียว | ช่วง (“A:A”) |
| สำหรับเซลล์ที่อยู่ติดกัน | พิสัย("A1:C5") |
| สำหรับเซลล์ที่ไม่ต่อเนื่องกัน | พิสัย("A1:C5, F1:F5") |
| สำหรับจุดตัดของสองช่วง | พิสัย("A1:C5 F1:F5") (สำหรับเซลล์จุดตัด โปรดจำไว้ว่าไม่มีตัวดำเนินการเครื่องหมายจุลภาค) |
| เพื่อรวมเซลล์ | พิสัย("A1:C5") (หากต้องการรวมเซลล์ให้ใช้คำสั่ง "ผสาน") |
การเลือกเซลล์เป็นเพียงขั้นตอนแรกเท่านั้น ในทางปฏิบัติ มาโครจะอ่านค่าที่อยู่ในเซลล์และเขียนค่าใหม่กลับเข้าไปในเซลล์นั้น
วิธีการอ่านและเขียนค่าด้วยออบเจ็กต์ Range
มาโครเกือบทุกตัวที่ทำงานกับเวิร์กชีตจะทำอย่างใดอย่างหนึ่งในสองอย่าง คือ อ่านค่าจากเซลล์ หรือเขียนค่าเข้าไปในเซลล์ ทั้งสองอย่างทำงานผ่านคุณสมบัติ Value และไม่จำเป็นต้องเลือกเซลล์ก่อน
Sub ReadAndWrite() Dim Price As Double Dim Qty As Long ' Read two values out of the sheet Price = Range("B1").Value Qty = Range("B2").Value ' Write the calculated result back Range("B3").Value = Price * Qty ' Fill a whole block in one statement Range("D1:D10").Value = "Guru99" ' Clear only the contents, keeping the formatting Range("F1:F10").ClearContents End Sub
มีสี่ประเด็นที่ทำให้รูปแบบนี้เชื่อถือได้
- ไม่จำเป็นต้องเลือกตัวเลือกนี้: การเขียน Range(“B3”).Value = 10 วิธีนี้เร็วกว่าและปลอดภัยกว่าการเลือกเซลล์ก่อน มาโครที่บันทึกไว้เต็มไปด้วยคำสั่ง .Select เพราะตัวบันทึกจำลองการทำงานของเมาส์ ไม่ใช่เพราะโค้ดต้องการเช่นนั้น
- คุณค่าเทียบกับเนื้อหา: .Value จะส่งคืนข้อมูลพื้นฐาน ในขณะที่ .Text จะส่งคืนสตริงที่จัดรูปแบบแล้วซึ่งแสดงบนหน้าจอ ซึ่งอาจถูกตัดทอนตามความกว้างของคอลัมน์ อ่านค่า .Value ในการคำนวณ
- บล็อกทั้งหมดเรียงกันในบรรทัดเดียว: การกำหนดค่าให้กับช่วงเซลล์หลายเซลล์จะเติมข้อมูลลงในทุกเซลล์พร้อมกัน ซึ่งเร็วกว่าการทำซ้ำมากping.
- เคลียร์สิ่งที่ถูกต้อง: ClearContents จะลบเฉพาะค่า, Clear จะลบการจัดรูปแบบด้วย และ Delete จะลบเซลล์และเลื่อนเซลล์รอบข้างออกไป
ฟังก์ชัน Range ใช้สำหรับระบุตำแหน่งเซลล์โดยใช้ตัวอักษรและตัวเลข ส่วนฟังก์ชันอีกแบบใช้สำหรับระบุตำแหน่งเซลล์เดียวกันโดยใช้ตัวเลขสองตัวแทน
คุณสมบัติของเซลล์
ในทำนองเดียวกันกับช่วงใน VBA คุณสามารถใช้ "คุณสมบัติเซลล์" ได้เช่นกัน ความแตกต่างเพียงอย่างเดียวคือมันมีคุณสมบัติ "รายการ" ที่คุณใช้เพื่ออ้างอิงเซลล์ในสเปรดชีตของคุณ คุณสมบัติเซลล์มีประโยชน์ในลูปการเขียนโปรแกรม
ตัวอย่างเช่น
Cells.item(Row, Column). บรรทัดทั้งสองด้านล่างอ้างอิงถึงเซลล์ A1
- เซลล์.รายการ(1,1) หรือ
- Cells.item (1” A”)
ความแตกต่างระหว่างช่วง (Range) และเซลล์ (Cells) ใน VBA
การกำหนดช่วง (Range) และการใช้เซลล์ (Cells) เข้าถึงเซลล์ในเวิร์กชีตเดียวกันโดยใช้เส้นทางที่แตกต่างกัน และการเลือกใช้เส้นทางที่ถูกต้องจะทำให้โค้ดสั้นลงและอ่านง่ายขึ้น
| จุดแตกต่าง | พิสัย | เซลล์ |
|---|---|---|
| รูปแบบที่อยู่ | สตริงข้อความ, ช่วง(“A1”) | ตัวเลขสองตัว เซลล์(1, 1) |
| หลายเซลล์ | ใช่ ช่วง (“A1:C5”) | ทีละเซลล์ |
| ภายในลูป | จำเป็นต้องเชื่อมต่อสตริง | หมายเลขแถวสามารถใช้เป็นตัวนับรอบได้ |
| การอ่าน | ตรงกับที่อยู่ที่คุณเห็นใน Excel | คอลัมน์ที่ 27 นั้นยากต่อการจินตนาการมากกว่า AA |
| การใช้งานร่วมกัน | Range(Cells(1, 1), Cells(5, 3)) สร้าง A1:C5 จากตัวเลข | |
หลักการใช้งานจริงคือ ใช้ Range สำหรับที่อยู่คงที่ที่คุณสามารถอ่านได้อย่างรวดเร็ว และใช้ Cells เมื่อใดก็ตามที่มีการคำนวณหมายเลขแถวหรือคอลัมน์ในระหว่างการทำงานของโปรแกรม
คุณสมบัติออฟเซ็ตช่วง
คุณสมบัติชดเชยช่วงจะเลือกแถว/คอลัมน์ให้ห่างจากตำแหน่งเดิม เซลล์จะถูกเลือกตามช่วงที่ประกาศ ดูตัวอย่างด้านล่าง
ตัวอย่างเช่น
Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
ผลลัพธ์ที่ได้คือเซลล์ B2 คุณสมบัติ Offset จะเลื่อนเซลล์ A1 ออกไป 1 คอลัมน์และ 1 แถว คุณสามารถเปลี่ยนค่า RowOffset / ColumnOffset ได้ตามต้องการ คุณสามารถใช้ค่าลบ (-1) เพื่อเลื่อนเซลล์ไปด้านหลังได้
ดาวน์โหลด Excel ที่มีโค้ดด้านบน
ดาวน์โหลดไฟล์ Excel ด้านบน Code






