Macro VBA Excel2010 by A'Rong
-
Upload
smittichai-chaiyawong -
Category
Software
-
view
111 -
download
8
Transcript of Macro VBA Excel2010 by A'Rong
Record Macro1: run1to10
Run Macro1: run1to10
Record Macro2: auto1to10
Run Macro2: auto1to10
Record Macro3: CopyData
1. คลกิ Sheet ชลบุรี2. ลากคลมุ D3:D163. คัดลอก (Copy)4. คลกิ Sheet รวมยอดขาย5. คลกิ C36. วาง (Paste) แบบ Value
7. คลกิ Sheet กทม8. ลากคลมุ D3:D169. คัดลอก (Copy)10. คลกิ Sheet รวมยอดขาย11. คลกิ D312. วาง (Paste) แบบ Value
13. คลิก Sheet เชียงใหม่14. ลากคลุม D3:D1615. คดัลอก (Copy)16. คลิก Sheet รวมยอดขาย17. คลิก E318. วาง (Paste) แบบ Value
19. คลิก F2 พิมพ์ค าวา่ รวม20. คลิก F3 ใช้ Sum21. คดัลอกจนถึง F16
Run Macro3: CopyData
Record Macro4: AddData
1. คลกิ Sheet ชลบุรี2. คลกิ B3
4. กด ctrl + shift + ลกูศรลง5. กด ctrl + shift + ลกูศรขวา6. คัดลอก (Copy)
8. คลกิ Sheet เรียงยอดขาย
10. กด ctrl + Home11. กด ctrl + ลกูศรลง12. กด ลกูศรลง13. วาง (Paste)
1. คลกิ Sheet กทม2. คลกิ B3
4. กด ctrl + shift + ลกูศรลง5. กด ctrl + shift + ลกูศรขวา6. คัดลอก (Copy)
8. คลกิ Sheet เรียงยอดขาย
10. กด ctrl + Home11. กด ctrl + ลกูศรลง12. กด ลกูศรลง13. วาง (Paste)
1. คลกิ Sheet เชยีงใหม่2. คลกิ B3
4. กด ctrl + shift + ลกูศรลง5. กด ctrl + shift + ลกูศรขวา6. คัดลอก (Copy)
8. คลกิ Sheet เรียงยอดขาย
10. กด ctrl + Home11. กด ctrl + ลกูศรลง12. กด ลกูศรลง13. วาง (Paste)
15. คลิก Sheet เรียงยอดขาย
16. คลิก C2
18. กด ctrl + ลกูศรลง
19. กด ลกูศรลง
20. ใช้ Sum
Run Macro4: AddData
Record Macro5: InputData
4. คลิก Sheet Data
5. คลิก A1
7. กด ctrl + ลกูศรลง8. กด ลกูศรลง
9. วาง (Paste) แบบ Value
Run Macro5: InputData
Record Macro6: ClearData
Run Macro6: ClearData
Object :การอา้งอิงวตัถุ
• Cell–Range(“ช่ือเซล") :ระบตุ าแหน่ง
–ActiveCell :เซลปัจจุบนั, ที่เร่ิมเลือก
– Selection :เซลทัง้หมดที่คลุม
• Sheet– Sheets(เลขชีท) :ระบตุ าแหน่งที่
– Sheets(“ช่ือชีท") :ระบช่ืุอ
–ActiveSheet :ซทีปัจจุบนั
Statement :การเขียนรูปประโยคค าสั่ง
ObjectProperty Parameter
Method ขยาย Method
ขยาย Object
• Property
• Method
Property
• Cell–Value : ก าหนดคา่ใน Cell
–Font : ก าหนดลกัษณะ Font
• Sheet–Name : ก าหนดช่ือ Sheet
VBA1 :TypeDate
1. พิมพ์ Sub เว้นวรรค
2. ตัง้ช่ือค าสัง่ เปิด-ปิด วงเล็บ3. กด Enter
4. End Sub จะขึน้เองไม่ต้องพิมพ์
• Range("A1").Value = "จนัทร์“
Run VBA1 :TypeDate
VBA2 :FormatCell
1. ตัง้ Sub ช่ือ FormatCell
2. เขียน Statement
–ActiveCell.Font.Bold = True
->ให้ข้อความเป็นตวัหนา
–ActiveCell.Font.Size = 20
->ให้ข้อความมีขนาด 20
–ActiveCell.Font.ColorIndex = 3
->ให้ข้อความเป็นสีแดง
*ต้องการสีอื่นทดลองเปลี่ยนตวัเลขเอง
Run VBA2 :FormatCell
VBA3 :FormatAll
1. ตัง้ Sub ช่ือ FormatCell
2. เขียน Statement
–Selection.Font.Bold = False
->ให้ข้อความไม่เป็นตวัหนา
–Selection.Font.Size = 11
->ให้ข้อความมีขนาด 11
–Selection.Font.ColorIndex = 1
->ให้ข้อความเป็นสีด า
*ต้องการสีอื่นทดลองเปลี่ยนตวัเลขเอง
Run VBA3 :FormatAll
VBA4 :SheetName
1. ตัง้ Sub ช่ือ FormatCell
2. เขียน Statement
–ActiveSheet.Name = ActiveCell.Value
->ให้ช่ือชีทเท่ากับช่ือเซลที่เลือก
*ถ้าเซลที่เลือกเป็นเซลว่างจะเกิด [email protected] 34
Run VBA4 :SheetName
Method
• Cell–Clear : ลบคา่ใน Cell
–Offset, Select : เลื่อน Cell
–Copy, Paste: คดัลอก วางคา่ใน Cell
• Sheet–Add: เพ่ิม Sheet
VBA5 :DeleteData
1. ตัง้ Sub ช่ือ DeleteData
2. เขียน Statement
–Selection.Clear
->ลบข้อมูลบริเวณที่เลือก
Run VBA5 :DeleteData
VBA6 :TypeDirect
1. ตัง้ Sub ช่ือ TypeDirect
2. เขียน Statement
–ActiveCell.Value = "North“
->ที่เซลปัจจบนัพิมพ์ “North”
–ActiveCell.Offset(1, 1).Value = "East"
->ท่ีเซลปัจจบนัเลื่อนไป 1 row 1 column พิมพ์ “East”
–ActiveCell.Offset(1, 0).Select
->เลือกลงมา 1 แถวจากเซลปัจจุบนั
Run VBA6 :TypeDirect
VBA7 :CopyPaste
1. ตัง้ Sub ช่ือ CopyPaste
2. เขียน Statement–ActiveCell.Copy
->คดักลอกจากเซลปัจจุบนั–ActiveCell.Offset(0, 1).Select->เลือกไปขวา 1 ช่อง–ActiveCell.PasteSpecial xlPasteValues
->วางข้อมูลลง–ActiveCell.Offset(0, 1).Select->เลือกไปขวา 1 ช่อง–ActiveSheet.Paste
->วางข้อมูลลง[email protected] 41
Run VBA7 :CopyPaste
VBA8 :AddSheet
1. ตัง้ Sub
2. เขียน Statement
–Sheets.Add
->เพิ่มชีท
–ActiveSheet.Name = "Qrt4"
->ใส่ช่ือเป็น “Ort4”
*คดัลอกวาง 4 ชุดแล้วเปลี่ยนเป็น
Qtr3 Qtr2 Qtr1 ตามล าดบั
Run VBA8 :AddSheet
Function
• MsgBox :– i = MsgBox(“Prompt", Buttons, "Title")
• i : ตวัแปรรับคา่จากตอบ Button ใน MsgBox
• Prompt : ข้อความแสดงใน MsgBox
• Button : ปุ่ มให้คลิกตอบ• Title : ข้อความหวัข้อ
• InputBox :– i = InputBox (“Prompt", "Title",Default)
• i : ตวัแปรรับคา่จาก InputBox
• Prompt : ข้อความแสดงใน InputBox
• Title : ข้อความหวัข้อ• Default : คา่เร่ิมต้น
VBA9 :MsgBox
1. เมื่อสั่ง Run จะได้
2. เมื่อสั่ง Run จะลบข้อมูลที่คลุม แล้วจะได้
VBA10 :InputBoxCal
1. ตัง้ Sub
2. เขียน Statement
–รับคา่ส่วนสูงเก็บไว้ที่ I
–ที่เซลแสดงข้อความ “คา่น า้หนักที่เหมาะสม"
–ลง 1 ช่องแสดงข้อความ “เพศชาย"
–ลง 1 ช่อง ขวา 1 ช่อง แสดง I-105
–ลง 2 ช่องแสดงข้อความ “เพศหญิง"
–ลง 2 ช่อง ขวา 1 ช่อง แสดง I-115
Run VBA10 :InputBoxCal
Variable
• Dim ช่ือตวัแปร As ชนิด– Integer
–Long
–String
–Date
–Variant
• Dim I As Integer–ตวัแปร I เก็บคา่ได้ -32768 ถึง 32767
VBA11 :InputBoxTax
1. ตัง้ Sub
2. เขียน Statement
–> ตัง้ตวัแปรตา่งๆ
–>InputBox รับคา่ตา่งๆ
–>ค านวณ
–>แสดงคา่
Run VBA11 :InputBoxTax
Control Structure
• Condition
–If…Then…Else
–Select…Case
• Loop
–For…To…Next
–Do While…Loop
–Do Unit…Loop
–Do…Loop While
–Do…Loop Unit
VBA12 :IfBlank
1. ตัง้ Sub
2. เขียน Statement
– ถ้า เซลปัจจบุนัเท่ากบัว่าง ให้
–> ให้เซลปัจจบุนัแสดง “ไม่มีค่า”–ถ้าไม่
–> ให้เซลปัจจบุนั เป็นตวัหนา
–> ให้เซลปัจจบุนัเป็นสีแดง –จบเง่ือนไข
Run VBA12 :IfBlank
VBA13 :IfSocialCal1. ตัง้ Sub
2. เขียน Statement
–> ตัง้ตวัแปรตา่งๆ
–>InputBox รับคา่ตา่งๆ
– ถ้า เงินเดือน <= 1650 ให้
–> Cal =83
– ถ้า เงินเดือน >= 15000 ให้
–> Cal =750
– ถ้าไม่
–> ค านวณ Cal =เงินเดือน คณู 5%
–จบเง่ือนไข
–>>แสดงคา่ปกติ 5% ของคา่จ้าง
*ขัน้ต ่าเดือนละ 1,650 บาท เงินสมทบ 83 บาท**ขัน้สูงเดือนละ 15,000 บาท เงินสมทบ 750 บาท[email protected] 55
Run VBA13 :IfSocialCal
VBA14 :IfDelect
1. ตัง้ Sub
2. เขียน Statement
–>MsgBox รับค่า (Ok=1, Cancel=2)
–>ถ้า i=1 ให้–>ลบบริเวณทีเ่ลือก–>จบ
Run VBA14 :IfDelect
VBA15 :CaseGrade1. ตัง้ Sub
2. เขียน Statement
–> ตัง้ตวัแปร
–>InputBox รับคา่
–ตรวจสอบว่าอยูใ่นช่วง Case ใน–แสดง MsgBox ของ Case นัน้
Run VBA15 :CaseGrade
VBA16 :CaseCom1. ตัง้ Sub
2. เขียน Statement
–> ตัง้ตวัแปร
–>ตวัแปร Sale เท่ากันคา่ในเซลปัจจุบนั
–ตรวจสอบว่าอยู่ในช่วง Case ใน
–ถัดไป 1 ช่อง ค านวณ Cal คา่ใน Case นัน้
–เลือกลง 1 ช่อง[email protected] 61
Run VBA16 :CaseCom
VBA17 :For1to10
1. ตัง้ Sub
2. เขียน Statement
–> ตัง้ตวัแปร
–>ตวัแปร I เร่ิมที่ 1 ถึง 10
–เซลปัจจบุนัเท่ากบั i
–เลือกลง 1 ช่อง–>ตวัแปร I เพ่ิมขึน้ 1
Run VBA17 :For1to10
VBA18 :For1toNum
1. ตัง้ Sub
2. เขียน Statement
–> ตัง้ตวัแปร
–>InputBox รับคา่ Num
–>ตวัแปร I เร่ิมที่ 1 ถึง Num
–เซลปัจจุบนัเท่ากับ i
–เลือกลง 1 ช่อง
–>ตวัแปร I เพิ่มขึน้ 1
VBA18 :For1toNum
1. ตัง้ Sub
2. เขยีน Statement
–> ตัง้ตัวแปร Num เป็น String
–> ถ้าตอบ Cancel จะได้ Num เป็นค่าวา่งจะเกิด Error
Run VBA18 :For1toNum
VBA19 :ForAddSheet
1. ตัง้ Sub
2. เขียน Statement
–> ตัง้ตวัแปร
–>InputBox รับคา่ Num
–>ตวัแปร I เร่ิมที่ 1 ถึง Num
–เพิ่มชีท หลังชีทล าดบัสุดท้าย (ที่นับได้)
–ช่ือชีทเท่ากับ i
–>ตวัแปร I เพิ่มขึน้ 1
Run VBA19 :ForAddSheet
VBA20 :DoWhGrad
–> ตัง้ตวัแปร
–>ตรวจสอบคา่ในช่องเซล ถ้าไม่เท่ากบัว่าง(หมายถึงมีคา่) ก็ท า statement ด้านใน ถ้าเท่ากบัว่าง ก็ไม่ต้องท า ข้ามไปที่ Loop
–>เลื่อนลง 1 ช่อง
–>วนกบัไปท าใหม่ ที่ Do [email protected] 70
Run VBA20 :DoWhGrad
VBA21 :DoUnDigi
–> ตัง้ตวัแปร
–>ตรวจสอบถ้าคา่ I > total ข้ามไปที่ Loopถ้า i<=total ก็ท า statement ด้านใน
–>เลื่อนลง 1 ช่อง
–>วนกบัไปท าใหม่ ที่ Do [email protected] 72
Run VBA21 :DoUnDigi
VBA22 :LoopWhAmount
–> ท างานทันที–>sale เท่ากับคา่ด้านบน
–>sale เป็นตวัเลขหรือไม่–>ถ้าใช ่เซลปัจจบุนั เท่ากับ Sale บวกเซลด้านหน้า
–>ถ้าไม่ เซลปัจจบุนั เท่ากับเซลด้านหน้า
– เลื่อนเซลลง 1 ชอ่ง
– ถ้าเซลปัจจบุนัเท่ากับวา่ง และเซลด้านหน้าไม่วา่ง (หมายถึงมีคา่) ให้วนขึน้ไปท า Do ใหม่
Run VBA22 :LoopWhAmount
VBA23 :LoopUnVax
–รับคา่ vax
–> ท างานทันที
–เซลถัดไป เท่ากับเซลปัจจุบนั* vax
–เลื่อนเซลลง 1 ช่อง–ถ้าเซลปัจจุบนัว่าง ก็จบการท างาน ไม่ต้องวนขึน้ไปท า Do ใหม่
Run VBA23 :LoopUnVax
Great Functions In VBA
สร้างFunction ช่ือ(ตวัแปร As ชนิดตวัแปร) As ชนิดฟังชัน่
statement
Function
เรียกใช้= ช่ือ(ตวัแปร)
Fx1 :Age(birthday)
Fx2 :SetPrice(unit,cost,profit)
Fx3 :PaySocial(Salary)
– รับคา่จ านวนบรรทัด (line)
–สร้าง I ไว้เช็คกับคา่ line
–Do ใหญไ่ว้เช็ค I กับ line• Do ใช้ค านวณ
• บวก I เพื่อใช้นบัค่า
• น า Salary มา* 7%
• แสดงค่าในช่องถดัไป
• เล่ือนลง 1 ช่อง
• ถ้าเซลว่าง จบ Loop ไม่ต้องวนท า• (หมายความว่า ถ้าเซลมีค่า ก็วน Loop ไปค านวน)
• Do เซ็คบรรทดัว่าง
• บวก I เพื่อใช้นบัค่า• เล่ือนลง 1 ช่อง
• ถ้า ค่าเซลว่าง และ I ยงัไม่มากกว่า line ก็วน Loop ไปท างาน
• *ถ้าเซลมีค่าก็จะหลุดออกมา เซ็ค Loop ใหญ่
– ถ้า I ยังไม่มากกวา่ line ก็วน Loop ไปท างาน[email protected] 83