บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
ตัวแปรที่กำหนดขึ้นใช้เอง รูปแบบ [Private/Public] Type Varname elementName[([subscripts])] as type ….. End Type โดยที่ Varname คือชื่อของตัวแปรที่ต้องการสร้างขึ้น elementName คือชื่อของตัวแปรที่อยู่ภายใต้ตัวแปรที่สร้างขึ้น subscripts คือขนาดของ array ใช้ในกรณี elementName ที่กำหนดขึ้นเป็น Array type คือประเภทของข้อมูล
ตัวอย่าง Type EmployeeRecord ID as integer Name as String *20 Address as String * 30 Phone as Long HireDate as Date End Type Dim MyRecord as EmployeeRecord MyRecord.ID = 123
Dim Varname[([Subscripts])] [As Type][,Varname [([Subscripts])] ตัวแปรชนิด Array คือ เป็นโครงสร้างข้อมูลขั้นพื้นฐานที่เป็นการสร้างกลุ่มหรือชุดของตัวแปร โดยนำตัวแปรประเภทเดียวกันหลายๆ ตัวมาเรียงต่อกัน โดยสามารถอ้างถึงหรือเรียกใช้งานตัวแปรแต่ละตัวที่เป็นสมาชิกในกลุ่มได้ด้วยเลข Index การประกาศ Array จะมีรูปแบบดังนี้ Dim Varname[([Subscripts])] [As Type][,Varname [([Subscripts])] [As Type]]... โดยที่ Varname หมายถึง ชื่อของตัวแปร Array Subscripts หมายถึง ขนาดมิติ ซึ่งจะเขียนในรูปแบบ [Lower To]upper, [Lower to]upper… โดย Lower คือจำนวนแถวส่วน upper คือจำนวนสดมภ์ Type หมายถึงประเภทข้อมูล
Array แบ่งออกได้เป็น 2 ประเภทคือ 1. Static Array เป็น Array ที่มีขนาดของมิติตายตัว เปลี่ยนแปลงไม่ได้ 2. Dynamic Array เป็น Array ที่เปลี่ยนแปลงขนาดของมิติได้ ในการสร้าง Array จะใช้การ Declare เช่นเดียวกับตัวแปรทั่วไป แต่จะมีส่วนของวงเล็บที่ใช้บอกขนาดของมิติของ Array นั้นต่อท้าย เช่น Dim A(10) As String
ตัวอย่าง การประกาศตัวแปรแบบ Array Dim A(2) as integer Dim Z(1) Dim B(1 to 3) as String Dim C(3) as integer Dim D(1,2) as integer Dim E(1 to 5, 1 to 5) as integer Option Base 1 Dim y(4) as integer
Dim ArrayName( ) as VariableType Redim[Preserve]ArrayName(Subscripts) Dynamic Array : Array ประเภทนี้สามารถเปลี่ยนแปลงขนาดได้ ดังนั้นในการ Declare จึงไม่ต้องระบุขนาดในวงเล็บ รูปแบบ Dim ArrayName( ) as VariableType Redim[Preserve]ArrayName(Subscripts) โดยที่ Redim เป็นคำสั่งเมื่อต้องการระบุถึงขนาดภายหลังของ Dynamic Array ArrayName คือ ชื่องของ Array Subscripts คือ ขนาดมิติของ Array ดังได้กล่าวแล้วแต่ในกรณีที่มากกว่า 1 มิติให้คั่นด้วยเครื่องหมาย “,” Preserve ใช้ในกรณีที่ต้องการเก็บข้อมูลของ Array ไว้เมื่อมีการปรับขนาดของ array เพราะถ้าไม่มีคำสั่ง Preserve ค่าที่อยู่ในตัวแปร array ก่อนที่ถูกเปลี่ยนขนาดจะหายทั้งหมด
เช่น Dim x( ) as integer ….. Redim x(5) for I = 1 to 5 x(I) = I next I ตัวอย่าง จงเปลี่ยนขนาดของ x(5) ให้มีขนาดเป็น 7 ช่อง Dim x ( ) as integer Redim x(7) การเปลี่ยนขนาดมิติของ Array มีข้อจำกัดสิ่งหนึ่งคือ เปลี่ยนขนาดได้เฉพาะมิติสุดท้ายของ Array ได้เท่านั้น เช่น
ตัวอย่าง ต้องการกำหนดฐานของ Array ชื่อ y ขนาด 5 ช่อง เริ่มที่ 1 Option Base 1 Dim y(5) as integer ค่าใน Array y จะมีชื่อ y(1),y(2),y(3),y(4),y(5)
ตัวอย่าง Dim A(2) as integer Dim strB(3) as string Dim Z(4) A(0) = 6 strB(0) = “EAU” strB(1) = “Love” strB(2) = strB(0)+strB(1) strB(3) = strB(1) & strB(0) Z(0) = 78 Z(1) = 100 Z(2)= Z(0) + Z(1) Z(3)= Z(0) & Z(1) Z(4) =Z(1) – Z(0) Print A(1),A(2),strB(2) Print strB(3),Z(2),Z(3) Print Z(4)
ตัวอย่าง ถ้าข้อมูลใน Array x(5) เป็นดังนี้ 5,10,15,20,25 ฐานของ Array เริ่มที่ 1แล้วหลังจากประมวลผลคำสั่ง Redim Preserve x(10) ค่าของ x ทั้งหมดเป็นอย่างไร จะได้ Redim Preserve x(10) คือ x(o) = 0,x(1)=5,x(2)=10,x(3)=15,x(4)=20, x(5)=25,x(6)=0,x(7)=0,x(8)=0,x(9)=0,x(10)=0 ถ้าเป็น Redim x(10) จะได้ค่าทุกค่าใน x เป็น 0 หมด คือ x(0) = 0,x(1)=0,x(2)=0,x(3)=0,x(4)=0,x(5)=0,x(6)=0 X(7) =0,x(8)=0,x(9)=0,x(10) =0
การเปลี่ยนมิติของ Array มีข้อจำกัดคือ เปลี่ยนขนาดได้เฉพาะมิติสุดท้ายของ Array ได้เท่านั้น ตัวอย่าง Dim Temp( ) as integer Redim Temp(10,10,4) Redim Temp(10,10,6) Redim Temp(10,11,5)
จากโปรแกรมต่อไปนี้เมื่อประมวลผลจะได้ผลลัพธ์อย่างไร Private sub Command1_Click() Dim A(10) as integer,y as integer Dim I as integer, J as integer A(1) = 30 A(2) = 2 A(3) = 8 A(4) = 15 A(5) = 11 A(6) = 1 For I = 2 to 6 Y = A(i) A(0) = y j= i-1 Do While Y<A(j) A(J+1) = A(J) J= J-1 Loop A(J+1) = y Next I For I = 1 to 6 Print A(i) End Sub
Control Array คือ 0bject สามารถทำให้อยู่ในรูปของ Array ตัวอย่าง การสร้างเครื่องคิดเลข จะมีปุ่มตัวเลขตั้งแต่ 0-9 และเครื่องหมายสัญลักษณ์ โดยใช้ Command Button ตัวอย่าง การรับและแสดงค่าโดย Control Array ใช้ Text Box เมื่อกดปุ่ม Command Button จะลบข้อความใน Text Box ทั้งหมด for I = 0 to 4 Text1(i).text = “ “ Next
รูปแบบ With objectName [.cstatements] End With โดยที่ objectName คือชื่อของ Object Cstatements หมายถึง Method และ Property ของ Object ที่กำหนดใน ObjectName
ตัวอย่าง With Text1 Text1.Left = 0 .Left = 0 Text1.Top = 0 .Top = 0 .Width = 200 .Height = 200 End With Text1.Left = 0 Text1.Top = 0 Text1.Width = 200 Text1.Height = 200