บทที่ 8 ตัวแปร...
DESCRIPTION
บทที่ 8 ตัวแปร ชนิดข้อมูลและการอ้างถึง เวิร์ก ชีต และเซล. อ.รจนา วานนท์ Roseyayee.wordpress.com [email protected] Tel 089-7204020. ตัวแปร และชนิดข้อมูลใน VBA. - PowerPoint PPT PresentationTRANSCRIPT
1
บทท�� 8 ตั�วแปร ชนิ�ดข้�อมู�ลและการอ�างถึ�ง เว�ร�กช�ตั และเซล
อ.รจนิา วานินิท�Roseyayee.wordpress.com
[email protected] Tel 089-7204020
2
ตั�วแปร และชนิ�ดข้�อมู�ลในิ VBA
• ตั�วแปร คือ หน่ วยคืวามจำ�าสำ�าหร�บเก็�บข้�อม�ลชน่�ดตั าง ๆ โดยใช�สำ�ญล�ก็ษณ์&เป'น่ตั�วอ�ก็ษรตัามที่)*ก็�าหน่ดข้+,น่ เช น่ X,Y,Price,Sales,cost ก็ารเข้)ยน่โคื-ด VBA ใน่ Excel ตั�องม)ก็ารสำ งคื าไปย�งเซลตั าง ๆ ใน่เว�ร&ก็ช)ตั หรอก็ารน่�าคื าจำาก็เซลใน่เว�ร&ก็ช)ตัมาคื�าน่วณ์หรอประมวลผล ว�ธี)ก็ารเก็�บคื าจำาก็เซลก็ อน่น่�าไปคื�าน่วณ์หรอสำ งไปย�งเซล คืวรจำะพั�ก็เก็�บใน่ตั�วแปร จำะที่�าให�โคื�ด VBA ที่)*สำร�างข้+,น่ม)คืวามยดหย4 น่และสำะดวก็ใน่ก็ารเร)ยก็ใช�งาน่มาก็ข้+,น่
3
ชนิ�ดข้�อมู�ลประเภท ชนิ�ดข้�อมู�ล ข้อบเข้ตั หนิ#วยความูจ&าท��ใช�
ตั�วเลข้ Byte จำ�าน่วน่เตั�ม 0 ถึ+ง 255 1 byte
Integer จำ�าน่วน่เตั�ม -32,768 ถึ+ง 32,767 2 byte
Long จำ�าน่วน่เตั�ม -2,1347,483,648 ถึ+ง -2,1347,483,648
4 byte
Double ที่ศน่�ยม ช วงคื าน่�อยก็ว า 0ที่ศน่�ยม ช วงคื ามาก็ก็ว า 0
8 byte
ตัรรก็ะ Boolean True หรอ False ใช�สำ�าหร�บตัรวจำสำอบคื าจำร�งหรอเที่�จำ
2 byte
ข้�อคืวาม String ชน่�ดจำ�าน่วน่ตั�วอ�ก็ษรไม แน่ น่อน่ 10 byte+คืวามยาวตั�วอ�ก็ษร
ว�น่ที่)*เวลา Date 1 January 0100 ถึ+ง 31
December 9999 และเวลา 00.00.00 ถึ+ง 23:59:59
8 byte
4
หล�กการตั�'งช(�อตั�วแปร• ตั�องข้+,น่ตั�น่ด�วยตั�วอ�ก็ษร หรอ Underscore (_) เที่ าน่�,น่• ตั�วถึ�ดไปจำะเป'น่ตั�วเลข้ ตั�วอ�ก็ษร หรอ Underscore ก็�ได�• ตั�วอ�ก็ษรพั�มพั&เล�ก็พั�มพั&ใหญ ไม ม)คืวามแตัก็ตั างก็�น่
(Non-Case Sensitive)• ห�ามใช�คื�าสำงวน่ (Reserved Word)• ช*อตั�องม)คืวามยาวไม เก็�น่ 255 ตั�วอ�ก็ษร• ใน่ก็ารตั�,งช*อตั�วแปรน่�,น่เราสำามารถึตั�,งช*ออะไรก็�ได� แตั คืวร
ตั�,งช*อให�สำ*อคืวามหมายและสำามารถึบอก็ชน่�ดข้องตั�วแปรน่�,น่ ๆ เพั*อให�ง ายตั อก็ารแก็�ไข้และพั�ฒน่าช4ดคื�าสำ�*งใน่ภายหล�ง
5
การสร�างตั�วแปรไว�ใช�งานิ• ร�ปแบบก็ารสำร�างตั�วแปรจำะใช�คื�าว า Dim ช*อตั�วแปร As ชน่�ดข้�อม�ลข้องตั�วแปร เปร)ยบเสำมอน่ก็ารแจำ�งก็�บ Excel ให�ร� �ก็ อน่ใช�งาน่โคื-ด VBA ว าได�สำร�างตั�วแปรข้+,น่มาแล�ว ใน่ภาษาคือมพั�วเตัอร&ที่�*วไปน่�ยมเร)ยก็ก็ารสำร�างตั�วแปรไว�ใช�งาน่ว า ก็ารประก็าศตั�วแปร ม)ร�ปแบบด�งน่),
ร�ปแบบDim ช*อตั�วแปร As ชน่�ดข้�อม�ลข้อง
ตั�วแปร
6
ตั�วอย#างการสร�างตั�วแปรส&าหร�บการใช�งานิ VBA
• Dim x As Integer ให�ตั�วแปร x เก็�บคื าข้�อม�ลประเภที่ตั�วเลข้จำ�าน่วน่เตั�ม• Dim price As Single ให�ตั�วแปรช*อ
Price เก็�บคื าข้�อม�ลประเภที่ตั�วเลข้ที่ศน่�ยม• Dim complain As String ให�ตั�วแปร
ช*อ Complain เก็�บคื าข้�อม�ลาประเภที่ตั�วอ�ก็ษร
7
พิ�มูพิ�โค-ด VBA ตั�'งช(�อว#า test_var
ประก็าศตั�วแปร
ก็�าหน่ดคื าให�ตั�วแปร
แสำดงข้�อม�ลใน่เซลจำาก็คื าข้องตั�วแปร
8
ตั�วด&าเนิ�นิการ (Operators)ตั�วด&าเนิ�นิการข้องข้�อมู�ล
ชนิ�ดตั�วเลข้ตั�วด&าเนิ�นิการ
ข้องข้�อมู�ล ประเภท String
ตั�วด&าเนิ�นิการข้องข้�อมู�ล
ประเภท Boolean
ตั�วด�าเน่�น่ก็ารด�าน่ก็ารคื�าน่วณ์
ตั�วด�าเน่�น่ก็ารด�าน่ก็ารเปร)ยบ
เที่)ยบ
+ บวก็ > มาก็ก็ว า &(ใช�สำ�าหร�บ ก็ารน่�า
ตั�วอ�ก็ษรหรอข้�อคืวามเช*อมตั อ
ก็�น่)
And
จำร�งเม*อที่�,ง 2
เง*อน่ไข้จำร�ง- ลบ < น่�อยก็ว า Or เที่�จำเม*อที่�,ง 2
เง*อน่ไข้เที่�จำ* คื�ณ์ >
=มาก็ก็ว าหรอเที่ าก็�บ
Not
ให�คื าตัรงก็�น่ข้�ามก็�บเง*อน่ไข้แรก็
/ หาร <=
น่�อยก็ว าหรอเที่ าก็�บ
Xor
จำร�งเม*อที่�,ง 2
เง*อน่ไข้ตั างก็�น่\ หารเอา
จำ�าน่วน่เตั�ม
= เที่ าก็�บ Eqv
จำร�งเม*อที่�,ง 2
เง*อน่ไข้เหมอน่ก็�น่
^ ยก็ก็�าล�ง <>
ไม เที่ าก็�บ Imp
เที่�จำเม*อเง*อน่ไข้หน่�าจำร�งหล�งเที่�จำ
mod
หารเอาเศษ
9
ตั�วอย#างการใช�งานิตั�วด&าเนิ�นิการ
ตั�วอย#าง ผลล�พิธ์�ท��ได�S = 2*5 10t = 10/3 3.3333X = 10\3 3Y = 10 mod 3
1
Z = “Excel” & “VBA”
ExcelVBA
10
การป0องก�นิการล(มูด�วยการเข้�ยนิ Comments ในิโค�ด VBA
• ว�ธี)ก็ารเข้)ยน่ comments ให�ใสำ เคืร*องหมาย ’ ข้�างหน่�า comments ที่)*เราตั�องก็าร ตั�วอ�ก็ษรที่)*เข้)ยน่ที่�,งหมดจำะเป'น่สำ)เข้)ยวหล�งจำาก็ข้+,น่บรรที่�ดใหม และโปรแก็รมจำะมองเห�น่ว าสำ วน่น่),เป'น่ comments ไม ใช โคื-ด VBA ก็�จำะข้�ามสำ วน่น่),ไป
11
12
การอ�างถึ�ง เว�ร�กช�ตั และเซล• ว�ธี)อ�างถึ+งเว�ร&ก็ช)ตั By name
• ว�ธี)อ�างถึ+งเว�ร&ก็ช)ตั By Index
ร�ปแบบWorksheets(“sheet1”).Range(“a1”).V
alue = 5Worksheets(“Sales”).Range(“e1”).Val
ue = 3000
ร�ปแบบWorksheets(1).Range(“a1”).Value =
5Worksheets(3).Range(“e3”).Value =
“Customer list”
13
การอ�างถึ�ง เว�ร�กช�ตั และเซล• ว�ธี)อ�างถึ+งเว�ร&ก็ช)ตัที่)*ถึ�ก็เร)ยก็ใช�งาน่
ไม ตั�องระบ4ช*อเว�ร&ก็ช)ตั คื�าว า ActiveSheet จำะหมายถึ+งเว�ร&ก็ช)ตัที่)*ถึ�ก็เร)ยก็ใช�งาน่อย�
ร�ปแบบActiveSheet.Range(“a1”).Value = 5ActiveSheet.Range(“e2”).Value =
3000ActiveSheet.Range(“c3”).Value =
“Transportantion”
14
การอ�างถึ�ง เว�ร�กช�ตั และเซล (ตั#อ)• ว�ธี)อ�างถึ+งเซล By name
• ว�ธี)อ�างถึ+งเซล By Index
ร�ปแบบWorksheets(“sheet1”).Range(“a5”).V
alue = 5Worksheets(“marketing”).Range(“ce
100”).Value = “Budget”Worksheets(“sheet1”).Range(“f:g”).V
alue = “OK”ร�ปแบบWorksheets(“sheet1”).Cells(“5,1”).Va
lue = 25Worksheets(“cost”).Cells(“225,2”).Va
lue = 350
ตั�าแหน่ งคือล�มน่&
ตั�าแหน่ งแถึว
ช*อข้องเซล
15
การอ�างถึ�ง เว�ร�กช�ตั และเซล (ตั#อ)• ว�ธี)อ�างถึ+งเซล By Index
• ก็ารอ�างอ�งเซลที่)*ถึ�ก็เร)ยก็ใช�งาน่
ร�ปแบบการอ�างถึ�งเซลท��มูากกว#า 1 เซล ด�วยว�ธ์� by indexWorksheets(“sheet1”).Range(Cells(1,1),
Cells(3,5)).Value = 4Worksheets(“sheet1”).Range(Cells(2,3),
Cells(10,8)).Value = “VBA”
ร�ปแบบ ActiveCell.Value = 25 ActiveCell.Value = “Profit”
16
การอ�างถึ�ง เว�ร�กช�ตั และเซล (ตั#อ)• ว�ธี)อ�างถึ+งเซล By relative
ร�ปแบบ ActiveCell.Offset(2,3).Value = 25 ActiveCell.Offset(-1,5).Value = 25 ActiveCell.Offset(-2,3).Value = 25
ตั�าแหน่ งแถึวเพั�*มจำาก็เซล
ที่)*ถึ�ก็เร)ยก็ใช�งาน่ไป2 แถึว
ตั�าแหน่ งคือล�มน่&เพั�*มจำาก็คือล�มน่&ข้องเซล
ที่)*ถึ�ก็เร)ยก็ใช�งาน่ไป 3 คือล�มน่&
17
การอ�างถึ�ง เว�ร�กช�ตั และเซล (ตั#อ)• ว�ธี)อ�างถึ+งเซล By named ranges
ร�ปแบบ Worksheets(“sheet1”).Range(“center”).Value = “Bangkok” Worksheets(“Finance”).Range(“interest rate”).Value = 0.0675
ช*อข้องเซลที่)*ตั�,งช*อไว�ใน่ Excel
18
การค&านิวณมู�ลค#าเง�นิฝากธ์นิาคาร
• สำร�าง Procedure คื�าน่วณ์ม�ลคื าข้องเง�น่ฝาก็ธีน่าคืาร โดยร�บคื าจำ�าน่วน่เง�น่ฝาก็ อ�ตัราดอก็เบ),ย จำ�าน่วน่ป:ที่)*ฝาก็จำาก็เว�ร&ก็ช)ตั โดย Porcedure น่),ตั�องสำามารถึสำ�*งใช�งาน่ใน่ เว�ร&ก็ช)ตัใด ๆ ก็�ได�ใน่ไฟล&เด)ยวก็�น่
19
• 1 deposit_amout Single• 2. interest_rate Single• 3. period Integer• 4. future_amount Single
ตั�วแปร = ActiveSheet.Range(“a1”).ValueFuture_amount = deposit_amout * (1 + interest_rate) ^ Period
ActiveSheet.Range(“a4”).Value = future_amount
20
21
แบบฝ3กห�ดท�� 8.1
• สำร�าง Procedure เม*อเร)ยก็ใช�งาน่ให�พั�มพั&เคืร*องหมาย = ตั�,งแตั เซล B2 จำน่ถึ+ง B100 ใน่เว�ร&ก็ช)ตัช*อ sheet2• สำร�าง Procedure เม*อเร)ยก็ใช�งาน่ให�
พั�มพั&เคืร*องหมาย *** ตั�,งแตั เซล C3 จำน่ถึ+ง C100 ใน่เว�ร&ก็ช)ตัที่)*ใช�งาน่อย�