Excel VBA | ตอนที่ 3 ตัวแปรและอาร์เรย์ (Variables and Array)

04/11/2017 8:40 PM คอมพิวเตอร์ 3,221 views

ตัวแปร Integer –ใช้สำหรับหรับข้อมูลที่เป็นตัวเลขจำนวนเต็ม

หลังได้จากลองเขียนชุดคำสั่งทำงานกับช่วงข้อมูลแล้วจะลองเขียนให้ดูซับซ้อนขึ้นมาอีกนิดหน่อย

  1. ประกาศตัวแปรแถว คอลัมน์และค่าเป็นแบบ Integer (บรรทัด 1-3)
  2. กำหนดค่าตัวแปร Row,Col และ Val (บรรทัด 4-6)
  3. คำสั่งเลือกแถวโดยดูว่าแถวไหนจากตัวแปร Row
  4. คำสั่งเพิ่มตัวเลขให้กับแถวโดยดูว่าแถวไหนจากตัวแปร Row และค่าจากตัวแปร Val

Dim Row As Integer
Dim Val As Integer
Dim Col As Integer
Row = 3
Col = 6
Val = 5
Rows(Row).Select
Rows(Row).Value = Val
Columns(Col).Value = Val

 


ตัวแปร Double–ใช้สำหรับหรับข้อมูลที่เป็นตัวเลขที่เป็นทศนิยม

ลองเปลี่ยนคำสั่งจากตัวอย่าง Integer ด้านบนของตัวแปร Val เป็นทศนิยมและกำหนดค่าใหม่ (ถ้าหากเรากำหนดค่าให้ตัวแปร Val แต่ไม่ได้เปลี่ยนประเภทของตัวแปร ค่าที่แสดงก็จะเป็นเลข 5 เหมือนกับ Integer ตามตัวอย่างด้านบน)

Dim Row As Integer
Dim Val As Double
Dim Col As Integer
Row = 3
Col = 6
Val = 5.67
Rows(Row).Select
Rows(Row).Value = Val
Columns(Col).Value = Val

 


ตัวแปร String –ใช้หรับหรับข้อมูลที่เป็นตัวอักษร

ลองเขียนให้ดูซับซ้อนขึ้นมาอีกนิดหน่อยโดยประกาศค่าให้กับตัวแปรที่เป็น  String แล้วนำตัวแปรมาเติมแทนค่า และเลือกใช้คำสั่ง Cells และ Range เพื่อให้ค่าแสดงในช่องที่ต้องการ ดังรูป

Dim Name As String
Name = “Dechathon”
Range(“A1”).Value = Name
Cells(1, 4).Value = Name

 


ตัวแปร Array

อาร์เรย์เป็นกลุ่มของข้อมูลช่วยให้การประกาศตัวแปรง่ายขึ้น เช่นเมื่อมีข้อมูล 10 ตัวไม่ต้องเสียเวลาประกาศทีละตัวแต่รวมเป็นกลุ่มเดียว การประกาศตัวแปรอาร์เรย์จะกำหนดค่าให้อาร์เรย์ตามตัวเลขที่อยู่ข้างใน ตัวอย่างเช่น กำหนดให้ตัวแปร Films เป็นอักขระ (String) ลำดับที่ 1-5 และประกาศต่ออีกว่า Films ลำดับที่ 1 ใน Films(1) มีค่าเป็น “Lord of the Rings”

  • อาร์เรย์ 1 มิติ 

Dim Films(1 To 5) As String
Films(1) = “Lord of the Rings”
Films(2) = “Speed”
Films(3) = “Star Wars”
Films(4) = “The Godfather”
Films(5) = “Pulp Fiction”
MsgBox Films(4)

  • อาร์เรย์ 2 มิติ

ลองเติมตัวเลขในช่อง A1:D7 ดังรูปแล้วใช้คำสั่งด้านล่าง เป็นการทำอาร์เรย์ 2 มิติ เมื่อเรากำหนดค่าให้ Films (4,2) ตัวเลขในแถวที่ 4 คอลัมน์ที่ 2 จะแสดง ดังรูป

Dim Films(1 To 5, 1 To 2) As String
Dim i As Integer, j As Integer
For i = 1 To 5
For j = 1 To 2
Films(i, j) = Cells(i, j).Value
Next j
Next i
MsgBox Films(4, 2)

 


ตัวแปร Array Function

นอกจากอาร์เรย์ด้านบนแล้วยังมีอาร์เรย์แบบพิเศษคล้ายกับอาร์เรย์แบบ 1 มิติ แต่กาประกาศตัวแปรจะสั้นและง่ายกว่าไว้ในตัวแปรเดียวและข้อมูลจะอยู่ในวงเล็บภายใต้ Array เช่น

Dim Departments As Variant
Departments = Array(“Sales”, “Production”, “Logistics”)
MsgBox Departments(1)

หมายเหตุ

  1. ปกติแล้วเลขลำดับในอาร์เรย์จะเริ่มที่ 0 ดังนั้นมนคำสั่งเลข 1 จะแสดงคำว่า Production
  2. การเขียนคำสั่งควรมีการย่อหน้า เว้นวรรคตามลำดับความสำคัญให้เหมาะสมเพื่อจะได้ไม่งง แต่เนื่องจากมีผู้สนใจทดลองคัดลอกคำสั่งไปใช้งานแต่ Error เนื่องจากช่องว่าง (Space) ที่อยู่ด้านหน้า ผมเลยลบออกแล้วทำให้เท่ากันหมดทุกบรรทัด