Macro VBA Excel2010 by A'Rong

Preview:

Citation preview

smitrong@hotmail.com 1

Record Macro1: run1to10

smitrong@hotmail.com 2

Run Macro1: run1to10

smitrong@hotmail.com 3

Record Macro2: auto1to10

smitrong@hotmail.com 4

Run Macro2: auto1to10

smitrong@hotmail.com 5

Record Macro3: CopyData

smitrong@hotmail.com 6

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

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

smitrong@hotmail.com 7

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

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

smitrong@hotmail.com 8

Run Macro3: CopyData

smitrong@hotmail.com 9

Record Macro4: AddData

smitrong@hotmail.com 10

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

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

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

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

smitrong@hotmail.com 11

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

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

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

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

smitrong@hotmail.com 12

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

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

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

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

smitrong@hotmail.com 13

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

16. คลิก C2

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

19. กด ลกูศรลง

20. ใช้ Sum

smitrong@hotmail.com 14

Run Macro4: AddData

smitrong@hotmail.com 15

Record Macro5: InputData

smitrong@hotmail.com 16

1. คลิก Sheet Input

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

smitrong@hotmail.com 17

4. คลิก Sheet Data

5. คลิก A1

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

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

smitrong@hotmail.com 18

Run Macro5: InputData

smitrong@hotmail.com 19

Record Macro6: ClearData

smitrong@hotmail.com 20

1. คลิก Sheet Input

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

3. กด Delete

4. คลิก B2

smitrong@hotmail.com 21

Run Macro6: ClearData

smitrong@hotmail.com 22

smitrong@hotmail.com 23

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

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

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

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

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

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

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

smitrong@hotmail.com 24

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

ObjectProperty Parameter

Method ขยาย Method

ขยาย Object

• Property

• Method

smitrong@hotmail.com 25

Property

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

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

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

smitrong@hotmail.com 26

VBA1 :TypeDate

smitrong@hotmail.com 27

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

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

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

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

smitrong@hotmail.com 28

Run VBA1 :TypeDate

smitrong@hotmail.com 29

VBA2 :FormatCell

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

2. เขียน Statement

–ActiveCell.Font.Bold = True

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

–ActiveCell.Font.Size = 20

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

–ActiveCell.Font.ColorIndex = 3

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

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

smitrong@hotmail.com 30

Run VBA2 :FormatCell

smitrong@hotmail.com 31

VBA3 :FormatAll

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

2. เขียน Statement

–Selection.Font.Bold = False

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

–Selection.Font.Size = 11

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

–Selection.Font.ColorIndex = 1

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

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

smitrong@hotmail.com 32

Run VBA3 :FormatAll

smitrong@hotmail.com 33

VBA4 :SheetName

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

2. เขียน Statement

–ActiveSheet.Name = ActiveCell.Value

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

*ถ้าเซลที่เลือกเป็นเซลว่างจะเกิด Errorsmitrong@hotmail.com 34

Run VBA4 :SheetName

smitrong@hotmail.com 35

Method

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

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

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

• Sheet–Add: เพ่ิม Sheet

smitrong@hotmail.com 36

VBA5 :DeleteData

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

2. เขียน Statement

–Selection.Clear

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

smitrong@hotmail.com 37

Run VBA5 :DeleteData

smitrong@hotmail.com 38

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

smitrong@hotmail.com 39

Run VBA6 :TypeDirect

smitrong@hotmail.com 40

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

->วางข้อมูลลงsmitrong@hotmail.com 41

Run VBA7 :CopyPaste

smitrong@hotmail.com 42

VBA8 :AddSheet

1. ตัง้ Sub

2. เขียน Statement

–Sheets.Add

->เพิ่มชีท

–ActiveSheet.Name = "Qrt4"

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

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

Qtr3 Qtr2 Qtr1 ตามล าดบั

smitrong@hotmail.com 43

Run VBA8 :AddSheet

smitrong@hotmail.com 44

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

smitrong@hotmail.com 45

VBA9 :MsgBox

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

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

smitrong@hotmail.com 46

VBA10 :InputBoxCal

1. ตัง้ Sub

2. เขียน Statement

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

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

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

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

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

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

smitrong@hotmail.com 47

Run VBA10 :InputBoxCal

smitrong@hotmail.com 48

Variable

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

–Long

–String

–Date

–Variant

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

smitrong@hotmail.com 49

VBA11 :InputBoxTax

1. ตัง้ Sub

2. เขียน Statement

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

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

–>ค านวณ

–>แสดงคา่

smitrong@hotmail.com 50

Run VBA11 :InputBoxTax

smitrong@hotmail.com 51

Control Structure

• Condition

–If…Then…Else

–Select…Case

• Loop

–For…To…Next

–Do While…Loop

–Do Unit…Loop

–Do…Loop While

–Do…Loop Unit

smitrong@hotmail.com 52

VBA12 :IfBlank

1. ตัง้ Sub

2. เขียน Statement

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

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

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

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

smitrong@hotmail.com 53

Run VBA12 :IfBlank

smitrong@hotmail.com 54

VBA13 :IfSocialCal1. ตัง้ Sub

2. เขียน Statement

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

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

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

–> Cal =83

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

–> Cal =750

– ถ้าไม่

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

–จบเง่ือนไข

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

*ขัน้ต ่าเดือนละ 1,650 บาท เงินสมทบ 83 บาท**ขัน้สูงเดือนละ 15,000 บาท เงินสมทบ 750 บาทsmitrong@hotmail.com 55

Run VBA13 :IfSocialCal

smitrong@hotmail.com 56

VBA14 :IfDelect

1. ตัง้ Sub

2. เขียน Statement

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

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

smitrong@hotmail.com 57

Run VBA14 :IfDelect

smitrong@hotmail.com 58

VBA15 :CaseGrade1. ตัง้ Sub

2. เขียน Statement

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

–>InputBox รับคา่

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

smitrong@hotmail.com 59

Run VBA15 :CaseGrade

smitrong@hotmail.com 60

VBA16 :CaseCom1. ตัง้ Sub

2. เขียน Statement

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

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

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

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

–เลือกลง 1 ช่องsmitrong@hotmail.com 61

Run VBA16 :CaseCom

smitrong@hotmail.com 62

VBA17 :For1to10

1. ตัง้ Sub

2. เขียน Statement

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

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

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

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

smitrong@hotmail.com 63

Run VBA17 :For1to10

smitrong@hotmail.com 64

VBA18 :For1toNum

1. ตัง้ Sub

2. เขียน Statement

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

–>InputBox รับคา่ Num

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

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

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

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

smitrong@hotmail.com 65

VBA18 :For1toNum

1. ตัง้ Sub

2. เขยีน Statement

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

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

smitrong@hotmail.com 66

Run VBA18 :For1toNum

smitrong@hotmail.com 67

VBA19 :ForAddSheet

1. ตัง้ Sub

2. เขียน Statement

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

–>InputBox รับคา่ Num

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

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

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

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

smitrong@hotmail.com 68

Run VBA19 :ForAddSheet

smitrong@hotmail.com 69

VBA20 :DoWhGrad

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

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

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

–>วนกบัไปท าใหม่ ที่ Do whilesmitrong@hotmail.com 70

Run VBA20 :DoWhGrad

smitrong@hotmail.com 71

VBA21 :DoUnDigi

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

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

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

–>วนกบัไปท าใหม่ ที่ Do Untilsmitrong@hotmail.com 72

Run VBA21 :DoUnDigi

smitrong@hotmail.com 73

VBA22 :LoopWhAmount

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

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

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

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

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

smitrong@hotmail.com 74

Run VBA22 :LoopWhAmount

smitrong@hotmail.com 75

VBA23 :LoopUnVax

–รับคา่ vax

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

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

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

smitrong@hotmail.com 76

Run VBA23 :LoopUnVax

smitrong@hotmail.com 77

Great Functions In VBA

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

statement

Function

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

smitrong@hotmail.com 78

Fx1 :Age(birthday)

smitrong@hotmail.com 79

Fx2 :SetPrice(unit,cost,profit)

smitrong@hotmail.com 80

Fx3 :PaySocial(Salary)

smitrong@hotmail.com 81

smitrong@hotmail.com 82

– รับคา่จ านวนบรรทัด (line)

–สร้าง I ไว้เช็คกับคา่ line

–Do ใหญไ่ว้เช็ค I กับ line• Do ใช้ค านวณ

• บวก I เพื่อใช้นบัค่า

• น า Salary มา* 7%

• แสดงค่าในช่องถดัไป

• เล่ือนลง 1 ช่อง

• ถ้าเซลว่าง จบ Loop ไม่ต้องวนท า• (หมายความว่า ถ้าเซลมีค่า ก็วน Loop ไปค านวน)

• Do เซ็คบรรทดัว่าง

• บวก I เพื่อใช้นบัค่า• เล่ือนลง 1 ช่อง

• ถ้า ค่าเซลว่าง และ I ยงัไม่มากกว่า line ก็วน Loop ไปท างาน

• *ถ้าเซลมีค่าก็จะหลุดออกมา เซ็ค Loop ใหญ่

– ถ้า I ยังไม่มากกวา่ line ก็วน Loop ไปท างานsmitrong@hotmail.com 83

smitrong@hotmail.com 84

Recommended