Excel VBA | ตอนที่ 2 ช่วงข้อมูล (Range)

29/10/2017 8:56 PM คอมพิวเตอร์ 3,227 views

หลังจากที่ได้ลองเขียนคำสั่งเบื้องต้นไปแล้ว มาทำความรู้จักกับรายละเอียดต่างๆ ใน Worksheet เช่น ช่วงข้อมูล (Range), แถว (Row), คอลัมน์ (Column), เซลล์ (Cells) และคำสั่งที่มักใช้ทำงานรวมกับข้อมูลบ่อยๆ เช่น เลือก (Count), คัดลอก (Copy), วาง (Past), เคลียร์ (Clear), นับ (Count)

คำสั่งที่จะพบบ่อยในเนื้อหานี้คือ Select กับ Value

  • Select จะเป็นการเลือก จะเลือกอะไรก็ดูตรง ด้านหน้า เช่น Cells(3,2).Select ก็เลือกเซลล์ Rows(3).Select ก็เลือกแถว
  • Value เป็นการกำหนดค่า แต่ต้องมีส่วนต่อท้ายคือค่าที่จะกำหนด เช่น Cells(3,2).Value  =5 หรือ Rows(3).Value=5

 

Cells (เซลล์) 

หน่วยที่เล็กที่สุด เขียนคำสั่งง่ายๆ คือ Cells(Rows,Columns).Value = ค่าที่ต้องการ
Cells(3, 2).Value = 2  เมื่อเรากดปุ่มเซล์ใน worksheet แถวที่ 3 คอมลัน์ที่ 2 จะแสดงเลข 2 ดังรูป

ลองหาค่า ของ 2 เซลล์บวกกันแล้วนำผลลัพธ์ที่ได้ไปเก็บไว้อีกเซลล์นึง
Cells(1, 1).Value = 2
Cells(2, 1).Value = 3
Cells(3, 1).Value = Cells(1, 1) + Cells(2, 1)


Rows (แถว)

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

Rows(3).Select   ‘เลือกแถวที่ 3 ทั้งหมด
Rows(3).Value =5   ‘เติมเลข 5 ในแถวที่ 3 ทั้งหมด


Column (คอลัมน์)

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

Columns(3).Select   ‘เลือกคอลัมน์ที่ 3 ทั้งหมด
Columns(3).Value =5   ‘เติมเลข 5 ในคอลัมน์ที่ 3 ทั้งหมด


Range (ช่วง)

การทำงานที่กว้างมากขึ้นครอบคลุมทั้งเซลล์ แถว และคอมลัมน์รวมๆ กัน แต่สามารถกำหนดขอบแขตของแถวและคอลัมน์ได้แน่นอนกว่า ในคำสั่ง Range B ตัวหน้าก็คือคอลัมน์ ส่วนเลขข้างหลังก็คือแถวใน Worksheet ถ้าอยู่ในคำสั่ง Range จะนำมารวมกัน ลองดูในตัวอย่าง

 

  • Range with Cells ลองเขียนคำสั่ง Range มีส่วนที่เหมือนกันเซลล์ เช่น
    Range(“B3”).Value = 2

  • Range with Rows ลองเขียนคำสั่ง Range มีส่วนที่เหมือนกันแถว เช่น
    Range(“A1:A4”).Select  ‘คำสั่งเลือกแถว
    Range(“A1:A4”).Value = 5  ‘เพิ่มความข้อมูลให้กับ Rage ที่เลือก เช่น

  • Range with Column ลองเขียนคำสั่ง Range มีส่วนที่เหมือนกันคอลัมน์ เช่น
    Range(“A1:E1”).Select  ‘คำสั่งเลือกช่วงข้อมูล
    Range(“A1:E1”).Value = 5 ‘เพิ่มความข้อมูลให้กับ Rage ที่เลือก

  • ทดลองกำหนดค่าให้กับช่วงข้อมูลตามที่ต้องกา
    Range(“B3:D7”).Value = 9  ‘กำหนดค่าให้ช่วงข้อมูล
    Range(“A1:A10,B1:B7,C1:C3”).Value = 8  ‘ถ้าต้องการเลือกหลายช่วงในคำสั่งเดียวก็ได้


Copy/Paste 

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

Range(“A1:A2”).Copy
Range(“C3”).Select
ActiveSheet.Paste


Clear

การลบค่าต่างๆในช่วงที่เลือก โดยมี 3 รูปแบบหลักได้แก่

  • Clear ลบข้อมูลและรูปแบบเช่น สีพื้นหลัง ขนาดตัวอักษร
  • ClearContents ลบข้อมูลทั่วไป
  • ClearFormats ลบรูปแบบเช่น สีพื้นหลัง ขนาดตัวอักษร

เมื่อต้องการใช้ก็นำไปต่อท้ายช่วงข้อมูลที่เลือก เช่น

Range(“A1:A10”).Clear
Cells(5, 3).ClearContents
Rows(2).ClearFormats


Count

การนับจำนวนช่วงข้อมูลที่เลือก

MsgBox Range(“A1:C10”).Count