84

Macro VBA Excel2010 by A'Rong

Embed Size (px)

Citation preview

Page 2: Macro VBA Excel2010 by A'Rong

Record Macro1: run1to10

[email protected] 2

Page 3: Macro VBA Excel2010 by A'Rong

Run Macro1: run1to10

[email protected] 3

Page 4: Macro VBA Excel2010 by A'Rong

Record Macro2: auto1to10

[email protected] 4

Page 5: Macro VBA Excel2010 by A'Rong

Run Macro2: auto1to10

[email protected] 5

Page 6: Macro VBA Excel2010 by A'Rong

Record Macro3: CopyData

[email protected] 6

Page 7: Macro VBA Excel2010 by A'Rong

1. คลกิ Sheet ชลบุรี2. ลากคลมุ D3:D163. คัดลอก (Copy)4. คลกิ Sheet รวมยอดขาย5. คลกิ C36. วาง (Paste) แบบ Value

7. คลกิ Sheet กทม8. ลากคลมุ D3:D169. คัดลอก (Copy)10. คลกิ Sheet รวมยอดขาย11. คลกิ D312. วาง (Paste) แบบ Value

[email protected] 7

Page 8: Macro VBA Excel2010 by A'Rong

13. คลิก Sheet เชียงใหม่14. ลากคลุม D3:D1615. คดัลอก (Copy)16. คลิก Sheet รวมยอดขาย17. คลิก E318. วาง (Paste) แบบ Value

19. คลิก F2 พิมพ์ค าวา่ รวม20. คลิก F3 ใช้ Sum21. คดัลอกจนถึง F16

[email protected] 8

Page 9: Macro VBA Excel2010 by A'Rong

Run Macro3: CopyData

[email protected] 9

Page 10: Macro VBA Excel2010 by A'Rong

Record Macro4: AddData

[email protected] 10

Page 11: Macro VBA Excel2010 by A'Rong

1. คลกิ Sheet ชลบุรี2. คลกิ B3

4. กด ctrl + shift + ลกูศรลง5. กด ctrl + shift + ลกูศรขวา6. คัดลอก (Copy)

8. คลกิ Sheet เรียงยอดขาย

10. กด ctrl + Home11. กด ctrl + ลกูศรลง12. กด ลกูศรลง13. วาง (Paste)

[email protected] 11

Page 12: Macro VBA Excel2010 by A'Rong

1. คลกิ Sheet กทม2. คลกิ B3

4. กด ctrl + shift + ลกูศรลง5. กด ctrl + shift + ลกูศรขวา6. คัดลอก (Copy)

8. คลกิ Sheet เรียงยอดขาย

10. กด ctrl + Home11. กด ctrl + ลกูศรลง12. กด ลกูศรลง13. วาง (Paste)

[email protected] 12

Page 13: Macro VBA Excel2010 by A'Rong

1. คลกิ Sheet เชยีงใหม่2. คลกิ B3

4. กด ctrl + shift + ลกูศรลง5. กด ctrl + shift + ลกูศรขวา6. คัดลอก (Copy)

8. คลกิ Sheet เรียงยอดขาย

10. กด ctrl + Home11. กด ctrl + ลกูศรลง12. กด ลกูศรลง13. วาง (Paste)

[email protected] 13

Page 14: Macro VBA Excel2010 by A'Rong

15. คลิก Sheet เรียงยอดขาย

16. คลิก C2

18. กด ctrl + ลกูศรลง

19. กด ลกูศรลง

20. ใช้ Sum

[email protected] 14

Page 15: Macro VBA Excel2010 by A'Rong

Run Macro4: AddData

[email protected] 15

Page 16: Macro VBA Excel2010 by A'Rong

Record Macro5: InputData

[email protected] 16

Page 17: Macro VBA Excel2010 by A'Rong

1. คลิก Sheet Input

2. ลากคลมุ B12:G12 (ช่วงข้อมลูที่ต้องการ)3. คดัลอก (Copy)

[email protected] 17

Page 18: Macro VBA Excel2010 by A'Rong

4. คลิก Sheet Data

5. คลิก A1

7. กด ctrl + ลกูศรลง8. กด ลกูศรลง

9. วาง (Paste) แบบ Value

[email protected] 18

Page 19: Macro VBA Excel2010 by A'Rong

Run Macro5: InputData

[email protected] 19

Page 20: Macro VBA Excel2010 by A'Rong

Record Macro6: ClearData

[email protected] 20

Page 21: Macro VBA Excel2010 by A'Rong

1. คลิก Sheet Input

2. คลิก B2 กด ctrl คลิก B3,B6,B7

3. กด Delete

4. คลิก B2

[email protected] 21

Page 22: Macro VBA Excel2010 by A'Rong

Run Macro6: ClearData

[email protected] 22

Page 24: Macro VBA Excel2010 by A'Rong

Object :การอา้งอิงวตัถุ

• Cell–Range(“ช่ือเซล") :ระบตุ าแหน่ง

–ActiveCell :เซลปัจจุบนั, ที่เร่ิมเลือก

– Selection :เซลทัง้หมดที่คลุม

• Sheet– Sheets(เลขชีท) :ระบตุ าแหน่งที่

– Sheets(“ช่ือชีท") :ระบช่ืุอ

–ActiveSheet :ซทีปัจจุบนั

[email protected] 24

Page 25: Macro VBA Excel2010 by A'Rong

Statement :การเขียนรูปประโยคค าสั่ง

ObjectProperty Parameter

Method ขยาย Method

ขยาย Object

• Property

• Method

[email protected] 25

Page 26: Macro VBA Excel2010 by A'Rong

Property

• Cell–Value : ก าหนดคา่ใน Cell

–Font : ก าหนดลกัษณะ Font

• Sheet–Name : ก าหนดช่ือ Sheet

[email protected] 26

Page 27: Macro VBA Excel2010 by A'Rong

VBA1 :TypeDate

[email protected] 27

Page 28: Macro VBA Excel2010 by A'Rong

1. พิมพ์ Sub เว้นวรรค

2. ตัง้ช่ือค าสัง่ เปิด-ปิด วงเล็บ3. กด Enter

4. End Sub จะขึน้เองไม่ต้องพิมพ์

• Range("A1").Value = "จนัทร์“

[email protected] 28

Page 29: Macro VBA Excel2010 by A'Rong

Run VBA1 :TypeDate

[email protected] 29

Page 30: Macro VBA Excel2010 by A'Rong

VBA2 :FormatCell

1. ตัง้ Sub ช่ือ FormatCell

2. เขียน Statement

–ActiveCell.Font.Bold = True

->ให้ข้อความเป็นตวัหนา

–ActiveCell.Font.Size = 20

->ให้ข้อความมีขนาด 20

–ActiveCell.Font.ColorIndex = 3

->ให้ข้อความเป็นสีแดง

*ต้องการสีอื่นทดลองเปลี่ยนตวัเลขเอง

[email protected] 30

Page 31: Macro VBA Excel2010 by A'Rong

Run VBA2 :FormatCell

[email protected] 31

Page 32: Macro VBA Excel2010 by A'Rong

VBA3 :FormatAll

1. ตัง้ Sub ช่ือ FormatCell

2. เขียน Statement

–Selection.Font.Bold = False

->ให้ข้อความไม่เป็นตวัหนา

–Selection.Font.Size = 11

->ให้ข้อความมีขนาด 11

–Selection.Font.ColorIndex = 1

->ให้ข้อความเป็นสีด า

*ต้องการสีอื่นทดลองเปลี่ยนตวัเลขเอง

[email protected] 32

Page 33: Macro VBA Excel2010 by A'Rong

Run VBA3 :FormatAll

[email protected] 33

Page 34: Macro VBA Excel2010 by A'Rong

VBA4 :SheetName

1. ตัง้ Sub ช่ือ FormatCell

2. เขียน Statement

–ActiveSheet.Name = ActiveCell.Value

->ให้ช่ือชีทเท่ากับช่ือเซลที่เลือก

*ถ้าเซลที่เลือกเป็นเซลว่างจะเกิด [email protected] 34

Page 35: Macro VBA Excel2010 by A'Rong

Run VBA4 :SheetName

[email protected] 35

Page 36: Macro VBA Excel2010 by A'Rong

Method

• Cell–Clear : ลบคา่ใน Cell

–Offset, Select : เลื่อน Cell

–Copy, Paste: คดัลอก วางคา่ใน Cell

• Sheet–Add: เพ่ิม Sheet

[email protected] 36

Page 37: Macro VBA Excel2010 by A'Rong

VBA5 :DeleteData

1. ตัง้ Sub ช่ือ DeleteData

2. เขียน Statement

–Selection.Clear

->ลบข้อมูลบริเวณที่เลือก

[email protected] 37

Page 38: Macro VBA Excel2010 by A'Rong

Run VBA5 :DeleteData

[email protected] 38

Page 39: Macro VBA Excel2010 by A'Rong

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 แถวจากเซลปัจจุบนั

[email protected] 39

Page 40: Macro VBA Excel2010 by A'Rong

Run VBA6 :TypeDirect

[email protected] 40

Page 41: Macro VBA Excel2010 by A'Rong

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

Page 42: Macro VBA Excel2010 by A'Rong

Run VBA7 :CopyPaste

[email protected] 42

Page 43: Macro VBA Excel2010 by A'Rong

VBA8 :AddSheet

1. ตัง้ Sub

2. เขียน Statement

–Sheets.Add

->เพิ่มชีท

–ActiveSheet.Name = "Qrt4"

->ใส่ช่ือเป็น “Ort4”

*คดัลอกวาง 4 ชุดแล้วเปลี่ยนเป็น

Qtr3 Qtr2 Qtr1 ตามล าดบั

[email protected] 43

Page 44: Macro VBA Excel2010 by A'Rong

Run VBA8 :AddSheet

[email protected] 44

Page 45: Macro VBA Excel2010 by A'Rong

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 : คา่เร่ิมต้น

[email protected] 45

Page 46: Macro VBA Excel2010 by A'Rong

VBA9 :MsgBox

1. เมื่อสั่ง Run จะได้

2. เมื่อสั่ง Run จะลบข้อมูลที่คลุม แล้วจะได้

[email protected] 46

Page 47: Macro VBA Excel2010 by A'Rong

VBA10 :InputBoxCal

1. ตัง้ Sub

2. เขียน Statement

–รับคา่ส่วนสูงเก็บไว้ที่ I

–ที่เซลแสดงข้อความ “คา่น า้หนักที่เหมาะสม"

–ลง 1 ช่องแสดงข้อความ “เพศชาย"

–ลง 1 ช่อง ขวา 1 ช่อง แสดง I-105

–ลง 2 ช่องแสดงข้อความ “เพศหญิง"

–ลง 2 ช่อง ขวา 1 ช่อง แสดง I-115

[email protected] 47

Page 48: Macro VBA Excel2010 by A'Rong

Run VBA10 :InputBoxCal

[email protected] 48

Page 49: Macro VBA Excel2010 by A'Rong

Variable

• Dim ช่ือตวัแปร As ชนิด– Integer

–Long

–String

–Date

–Variant

• Dim I As Integer–ตวัแปร I เก็บคา่ได้ -32768 ถึง 32767

[email protected] 49

Page 50: Macro VBA Excel2010 by A'Rong

VBA11 :InputBoxTax

1. ตัง้ Sub

2. เขียน Statement

–> ตัง้ตวัแปรตา่งๆ

–>InputBox รับคา่ตา่งๆ

–>ค านวณ

–>แสดงคา่

[email protected] 50

Page 51: Macro VBA Excel2010 by A'Rong

Run VBA11 :InputBoxTax

[email protected] 51

Page 52: Macro VBA Excel2010 by A'Rong

Control Structure

• Condition

–If…Then…Else

–Select…Case

• Loop

–For…To…Next

–Do While…Loop

–Do Unit…Loop

–Do…Loop While

–Do…Loop Unit

[email protected] 52

Page 53: Macro VBA Excel2010 by A'Rong

VBA12 :IfBlank

1. ตัง้ Sub

2. เขียน Statement

– ถ้า เซลปัจจบุนัเท่ากบัว่าง ให้

–> ให้เซลปัจจบุนัแสดง “ไม่มีค่า”–ถ้าไม่

–> ให้เซลปัจจบุนั เป็นตวัหนา

–> ให้เซลปัจจบุนัเป็นสีแดง –จบเง่ือนไข

[email protected] 53

Page 54: Macro VBA Excel2010 by A'Rong

Run VBA12 :IfBlank

[email protected] 54

Page 55: Macro VBA Excel2010 by A'Rong

VBA13 :IfSocialCal1. ตัง้ Sub

2. เขียน Statement

–> ตัง้ตวัแปรตา่งๆ

–>InputBox รับคา่ตา่งๆ

– ถ้า เงินเดือน <= 1650 ให้

–> Cal =83

– ถ้า เงินเดือน >= 15000 ให้

–> Cal =750

– ถ้าไม่

–> ค านวณ Cal =เงินเดือน คณู 5%

–จบเง่ือนไข

–>>แสดงคา่ปกติ 5% ของคา่จ้าง

*ขัน้ต ่าเดือนละ 1,650 บาท เงินสมทบ 83 บาท**ขัน้สูงเดือนละ 15,000 บาท เงินสมทบ 750 บาท[email protected] 55

Page 56: Macro VBA Excel2010 by A'Rong

Run VBA13 :IfSocialCal

[email protected] 56

Page 57: Macro VBA Excel2010 by A'Rong

VBA14 :IfDelect

1. ตัง้ Sub

2. เขียน Statement

–>MsgBox รับค่า (Ok=1, Cancel=2)

–>ถ้า i=1 ให้–>ลบบริเวณทีเ่ลือก–>จบ

[email protected] 57

Page 58: Macro VBA Excel2010 by A'Rong

Run VBA14 :IfDelect

[email protected] 58

Page 59: Macro VBA Excel2010 by A'Rong

VBA15 :CaseGrade1. ตัง้ Sub

2. เขียน Statement

–> ตัง้ตวัแปร

–>InputBox รับคา่

–ตรวจสอบว่าอยูใ่นช่วง Case ใน–แสดง MsgBox ของ Case นัน้

[email protected] 59

Page 60: Macro VBA Excel2010 by A'Rong

Run VBA15 :CaseGrade

[email protected] 60

Page 61: Macro VBA Excel2010 by A'Rong

VBA16 :CaseCom1. ตัง้ Sub

2. เขียน Statement

–> ตัง้ตวัแปร

–>ตวัแปร Sale เท่ากันคา่ในเซลปัจจุบนั

–ตรวจสอบว่าอยู่ในช่วง Case ใน

–ถัดไป 1 ช่อง ค านวณ Cal คา่ใน Case นัน้

–เลือกลง 1 ช่อง[email protected] 61

Page 62: Macro VBA Excel2010 by A'Rong

Run VBA16 :CaseCom

[email protected] 62

Page 63: Macro VBA Excel2010 by A'Rong

VBA17 :For1to10

1. ตัง้ Sub

2. เขียน Statement

–> ตัง้ตวัแปร

–>ตวัแปร I เร่ิมที่ 1 ถึง 10

–เซลปัจจบุนัเท่ากบั i

–เลือกลง 1 ช่อง–>ตวัแปร I เพ่ิมขึน้ 1

[email protected] 63

Page 64: Macro VBA Excel2010 by A'Rong

Run VBA17 :For1to10

[email protected] 64

Page 65: Macro VBA Excel2010 by A'Rong

VBA18 :For1toNum

1. ตัง้ Sub

2. เขียน Statement

–> ตัง้ตวัแปร

–>InputBox รับคา่ Num

–>ตวัแปร I เร่ิมที่ 1 ถึง Num

–เซลปัจจุบนัเท่ากับ i

–เลือกลง 1 ช่อง

–>ตวัแปร I เพิ่มขึน้ 1

[email protected] 65

Page 66: Macro VBA Excel2010 by A'Rong

VBA18 :For1toNum

1. ตัง้ Sub

2. เขยีน Statement

–> ตัง้ตัวแปร Num เป็น String

–> ถ้าตอบ Cancel จะได้ Num เป็นค่าวา่งจะเกิด Error

[email protected] 66

Page 67: Macro VBA Excel2010 by A'Rong

Run VBA18 :For1toNum

[email protected] 67

Page 68: Macro VBA Excel2010 by A'Rong

VBA19 :ForAddSheet

1. ตัง้ Sub

2. เขียน Statement

–> ตัง้ตวัแปร

–>InputBox รับคา่ Num

–>ตวัแปร I เร่ิมที่ 1 ถึง Num

–เพิ่มชีท หลังชีทล าดบัสุดท้าย (ที่นับได้)

–ช่ือชีทเท่ากับ i

–>ตวัแปร I เพิ่มขึน้ 1

[email protected] 68

Page 69: Macro VBA Excel2010 by A'Rong

Run VBA19 :ForAddSheet

[email protected] 69

Page 70: Macro VBA Excel2010 by A'Rong

VBA20 :DoWhGrad

–> ตัง้ตวัแปร

–>ตรวจสอบคา่ในช่องเซล ถ้าไม่เท่ากบัว่าง(หมายถึงมีคา่) ก็ท า statement ด้านใน ถ้าเท่ากบัว่าง ก็ไม่ต้องท า ข้ามไปที่ Loop

–>เลื่อนลง 1 ช่อง

–>วนกบัไปท าใหม่ ที่ Do [email protected] 70

Page 71: Macro VBA Excel2010 by A'Rong

Run VBA20 :DoWhGrad

[email protected] 71

Page 72: Macro VBA Excel2010 by A'Rong

VBA21 :DoUnDigi

–> ตัง้ตวัแปร

–>ตรวจสอบถ้าคา่ I > total ข้ามไปที่ Loopถ้า i<=total ก็ท า statement ด้านใน

–>เลื่อนลง 1 ช่อง

–>วนกบัไปท าใหม่ ที่ Do [email protected] 72

Page 73: Macro VBA Excel2010 by A'Rong

Run VBA21 :DoUnDigi

[email protected] 73

Page 74: Macro VBA Excel2010 by A'Rong

VBA22 :LoopWhAmount

–> ท างานทันที–>sale เท่ากับคา่ด้านบน

–>sale เป็นตวัเลขหรือไม่–>ถ้าใช ่เซลปัจจบุนั เท่ากับ Sale บวกเซลด้านหน้า

–>ถ้าไม่ เซลปัจจบุนั เท่ากับเซลด้านหน้า

– เลื่อนเซลลง 1 ชอ่ง

– ถ้าเซลปัจจบุนัเท่ากับวา่ง และเซลด้านหน้าไม่วา่ง (หมายถึงมีคา่) ให้วนขึน้ไปท า Do ใหม่

[email protected] 74

Page 75: Macro VBA Excel2010 by A'Rong

Run VBA22 :LoopWhAmount

[email protected] 75

Page 76: Macro VBA Excel2010 by A'Rong

VBA23 :LoopUnVax

–รับคา่ vax

–> ท างานทันที

–เซลถัดไป เท่ากับเซลปัจจุบนั* vax

–เลื่อนเซลลง 1 ช่อง–ถ้าเซลปัจจุบนัว่าง ก็จบการท างาน ไม่ต้องวนขึน้ไปท า Do ใหม่

[email protected] 76

Page 77: Macro VBA Excel2010 by A'Rong

Run VBA23 :LoopUnVax

[email protected] 77

Page 78: Macro VBA Excel2010 by A'Rong

Great Functions In VBA

สร้างFunction ช่ือ(ตวัแปร As ชนิดตวัแปร) As ชนิดฟังชัน่

statement

Function

เรียกใช้= ช่ือ(ตวัแปร)

[email protected] 78

Page 79: Macro VBA Excel2010 by A'Rong

Fx1 :Age(birthday)

[email protected] 79

Page 80: Macro VBA Excel2010 by A'Rong

Fx2 :SetPrice(unit,cost,profit)

[email protected] 80

Page 81: Macro VBA Excel2010 by A'Rong

Fx3 :PaySocial(Salary)

[email protected] 81

Page 83: Macro VBA Excel2010 by A'Rong

– รับคา่จ านวนบรรทัด (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