บทแนะนำสำหรับผู้เริ่มต้นเกี่ยวกับการเขียนมาโคร VBA ใน Excel (และทำไมคุณควรเรียนรู้)

บทแนะนำสำหรับผู้เริ่มต้นเกี่ยวกับการเขียนมาโคร VBA ใน Excel (และทำไมคุณควรเรียนรู้)

Excel Macros ช่วยคุณประหยัดเวลาได้มากโดย ทำให้กระบวนการ Excel ที่คุณใช้บ่อยเป็นอัตโนมัติ . แต่มาโครนั้นค่อนข้างจำกัด การทำผิดพลาดกับเครื่องมือบันทึกนั้นทำได้ง่าย และกระบวนการบันทึกนั้นค่อนข้างยุ่งยาก





การใช้ VBA เพื่อสร้างมาโครช่วยให้คุณมีพลังมากขึ้น คุณสามารถบอก Excel ได้อย่างชัดเจนว่าต้องทำอะไรและต้องทำอย่างไร คุณยังเข้าถึงฟังก์ชันและความสามารถอีกมากมาย หากคุณใช้ Excel เป็นประจำ คุณควรเรียนรู้วิธีสร้างมาโคร VBA





เราจะเริ่มต้นด้วยพื้นฐาน





VBA คืออะไร?

VBA คือ Visual Basic สำหรับแอปพลิเคชัน ซึ่งเป็นภาษาการเขียนโปรแกรมที่คุณใช้ได้ในแอป Microsoft หลายๆ แอป Visual Basic เป็นภาษาการเขียนโปรแกรม และ VBA เป็นเวอร์ชันเฉพาะของแอปพลิเคชัน (Microsoft ยกเลิก Visual Basic ย้อนกลับไปในปี 2008 แต่ VBA ยังคงแข็งแกร่ง)

โชคดีสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ VBA นั้นเรียบง่ายมาก และอินเทอร์เฟซที่คุณใช้ในการแก้ไขนั้นให้ความช่วยเหลือได้มากมาย คำสั่งต่างๆ มากมายที่คุณจะใช้คำแนะนำแบบป๊อปอัปและการเติมข้อความอัตโนมัติ ช่วยให้คุณทำให้สคริปต์ทำงานได้อย่างรวดเร็ว



ถึงกระนั้น VBA ก็ต้องใช้เวลาพอสมควรในการทำความคุ้นเคย

ข้อดีของ VBA Macros ใน Excel

ถ้า VBA ยากกว่าการบันทึกมาโคร ทำไมคุณถึงใช้ คำตอบสั้น ๆ คือคุณจะได้รับพลังจากมาโคร VBA มากขึ้น





แทนที่จะคลิกรอบๆ สเปรดชีตและบันทึกการคลิกเหล่านั้น คุณจะสามารถเข้าถึงฟังก์ชันและความสามารถต่างๆ ของ Excel ได้ คุณเพียงแค่ต้องรู้วิธีใช้งาน

วิธีแสดงหน้าจอโทรศัพท์บนคอมพิวเตอร์

และเมื่อคุณคุ้นเคยกับ VBA มากขึ้นแล้ว คุณสามารถทำทุกสิ่งที่คุณอาจทำในมาโครปกติได้ในเวลาที่น้อยลง ผลลัพธ์จะคาดเดาได้มากขึ้นตามที่คุณบอกกับ Excel อย่างแน่นอน จะทำอย่างไร ไม่มีความคลุมเครือเลย





เมื่อคุณสร้างมาโคร VBA แล้ว การบันทึกและแชร์นั้นทำได้ง่ายเพื่อให้ทุกคนสามารถใช้ประโยชน์จากมันได้ สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณทำงานกับผู้คนจำนวนมากที่ต้องการทำสิ่งเดียวกันใน Excel

ลองดูมาโคร VBA ง่ายๆ เพื่อดูว่ามันทำงานอย่างไร

ตัวอย่างของ VBA Macro ใน Excel

มาดูมาโครแบบง่ายกัน สเปรดชีตของเราประกอบด้วยชื่อพนักงาน หมายเลขร้านค้าที่พนักงานทำงาน และยอดขายรายไตรมาส

มาโครนี้จะเพิ่มยอดขายรายไตรมาสจากร้านค้าแต่ละแห่งและเขียนผลรวมเหล่านั้นลงในเซลล์ในสเปรดชีต (หากคุณไม่แน่ใจว่าจะเข้าถึงกล่องโต้ตอบ VBA ได้อย่างไร ลองดู คำแนะนำ VBA ของเราที่นี่ ):

Sub StoreSales()
Dim Sum1 As Currency
Dim Sum2 As Currency
Dim Sum3 As Currency
Dim Sum4 As Currency
For Each Cell In Range('C2:C51')
Cell.Activate
If IsEmpty(Cell) Then Exit For
If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If
Next Cell

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

End Sub

นี้อาจดูยาวและซับซ้อน แต่เราจะแยกย่อยเพื่อให้คุณสามารถดูองค์ประกอบแต่ละอย่างและเรียนรู้เล็กน้อยเกี่ยวกับพื้นฐานของ VBA

ประกาศย่อย

ที่จุดเริ่มต้นของโมดูล เรามี 'Sub StoreSales()' สิ่งนี้กำหนดย่อยใหม่ที่เรียกว่า StoreSales

คุณยังสามารถกำหนดฟังก์ชันได้ ความแตกต่างคือฟังก์ชันสามารถส่งกลับค่าได้ และฟังก์ชันย่อยไม่สามารถทำได้ (หากคุณคุ้นเคยกับภาษาโปรแกรมอื่น ๆ ฟังก์ชันย่อยจะเทียบเท่ากับเมธอด) ในกรณีนี้ เราไม่จำเป็นต้องคืนค่า ดังนั้นเราจึงใช้ค่าย่อย

ที่ส่วนท้ายของโมดูล เรามี 'End Sub' ซึ่งบอก Excel ว่าเราเสร็จสิ้นด้วยมาโคร VBA นี้

การประกาศตัวแปร

โค้ดบรรทัดแรกในสคริปต์ของเราทั้งหมดเริ่มต้นด้วย 'Dim' Dim เป็นคำสั่งของ VBA สำหรับการประกาศตัวแปร

ดังนั้น 'Dim Sum1' จึงสร้างตัวแปรใหม่ชื่อ 'Sum1' อย่างไรก็ตาม เราต้องบอก Excel ว่าตัวแปรนี้คืออะไร เราจำเป็นต้องเลือกประเภทข้อมูล มีข้อมูลหลายประเภทใน VBA--- คุณสามารถค้นหา รายการทั้งหมดในเอกสารช่วยเหลือของ Microsoft .

เนื่องจากมาโคร VBA ของเราจะจัดการกับสกุลเงิน เราจึงใช้ชนิดข้อมูลสกุลเงิน

คำสั่ง 'ติ่มซำ1 เป็นสกุลเงิน' บอกให้ Excel สร้างตัวแปรสกุลเงินใหม่ที่เรียกว่า Sum1 ทุกตัวแปรที่คุณประกาศต้องมีคำสั่ง 'As' เพื่อบอกประเภทของ Excel

การเริ่มต้น For Loop

ลูปคือสิ่งที่ทรงพลังที่สุดที่คุณสามารถสร้างได้ในภาษาการเขียนโปรแกรมใดๆ หากคุณไม่คุ้นเคยกับลูป โปรดดูคำอธิบายของ Do-While loops ในตัวอย่างนี้ เรากำลังใช้ For loop ซึ่งครอบคลุมอยู่ในบทความด้วย

นี่คือลักษณะของลูป:

For Each Cell in Range('C2:C51')
[a bunch of stuff]
Next Cell

สิ่งนี้บอกให้ Excel วนซ้ำผ่านเซลล์ในช่วงที่เราระบุ เราใช้ a ช่วงวัตถุ ซึ่งเป็นวัตถุประเภทเฉพาะใน VBA เมื่อเราใช้วิธีนี้---ช่วง('C2:C51')---มันบอก Excel ว่าเราสนใจ 50 เซลล์เหล่านั้น

'For Each' บอก Excel ว่าเรากำลังจะทำอะไรบางอย่างกับแต่ละเซลล์ในช่วง 'เซลล์ถัดไป' จะอยู่หลังทุกสิ่งที่เราอยากทำ และบอกให้ Excel เริ่มวนซ้ำตั้งแต่ต้น (เริ่มจากเซลล์ถัดไป)

นอกจากนี้เรายังมีข้อความนี้: 'If IsEmpty(Cell) Then Exit For'

คุณเดาได้ไหมว่ามันทำอะไร?

บันทึก: พูดอย่างเคร่งครัด, การใช้ while loop อาจเป็นทางเลือกที่ดีกว่า . อย่างไรก็ตาม เพื่อประโยชน์ในการสอน ฉันตัดสินใจใช้ For loop กับ Exit

raspberry pi run คำสั่งในการบูต

คำสั่ง if-then-Else

แก่นของมาโครโดยเฉพาะนี้อยู่ในคำสั่ง if-then-Else ต่อไปนี้คือลำดับของคำสั่งแบบมีเงื่อนไขของเรา:

If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If

โดยส่วนใหญ่ คุณอาจจะเดาได้ว่าข้อความเหล่านี้ทำอะไรได้บ้าง คุณอาจไม่คุ้นเคยกับ ActiveCell.Offset 'ActiveCell.Offset(0, -1)' บอกให้ Excel ดูที่เซลล์ที่อยู่ทางซ้ายของเซลล์ที่ใช้งานอยู่หนึ่งคอลัมน์

ในกรณีของเรา นั่นคือการบอกให้ Excel ศึกษาคอลัมน์หมายเลขร้านค้า ถ้า Excel พบ 1 ในคอลัมน์นี้ จะใช้เนื้อหาของเซลล์ที่ใช้งานอยู่และเพิ่มลงใน Sum1 หากพบ 2 ระบบจะเพิ่มเนื้อหาของเซลล์ที่ใช้งานอยู่ใน Sum2 และอื่นๆ.

Excel ดำเนินการผ่านคำสั่งเหล่านี้ทั้งหมดตามลำดับ ถ้า คำสั่งแบบมีเงื่อนไข เป็นที่พอใจก็เสร็จสิ้นคำสั่งแล้ว หากไม่เป็นเช่นนั้น ก็จะย้ายไปที่ ElseIf ถัดไป หากดำเนินการจนสุดทางและไม่มีเงื่อนไขใดที่เป็นไปตามเงื่อนไข จะไม่ดำเนินการใดๆ

การรวมกันของลูปและเงื่อนไขคือสิ่งที่ขับเคลื่อนมาโครนี้ การวนซ้ำจะบอก Excel ให้ผ่านแต่ละเซลล์ในส่วนที่เลือก และเงื่อนไขจะบอกว่าต้องทำอย่างไรกับเซลล์นั้น

การเขียนค่าของเซลล์

ในที่สุด เราก็ได้เขียนผลลัพธ์ของการคำนวณของเราลงในเซลล์ นี่คือบรรทัดที่เราใช้ทำ:

Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4

ด้วย '.Value' และเครื่องหมายเท่ากับ เราตั้งค่าแต่ละเซลล์เหล่านั้นให้เป็นค่าของตัวแปรตัวใดตัวหนึ่งของเรา

และนั่นแหล่ะ! เราบอก Excel ว่าเราเขียน Sub นี้ด้วย 'End Sub' เสร็จแล้ว และมาโคร VBA ก็เสร็จสมบูรณ์

เมื่อเราเรียกใช้แมโครด้วย มาโคร ปุ่มใน นักพัฒนา แท็บ เราได้รับผลรวมของเรา:

การรวมหน่วยการสร้างของ VBA ใน Excel

เมื่อคุณดูที่มาโคร VBA ด้านบนเป็นครั้งแรก จะดูค่อนข้างซับซ้อน แต่หลังจากแยกย่อยเป็นส่วนประกอบแล้ว ตรรกะก็ชัดเจนขึ้น เช่นเดียวกับภาษาสคริปต์อื่นๆ ต้องใช้เวลาในการทำความคุ้นเคยกับไวยากรณ์ของ VBA

แต่ด้วยการฝึกฝน คุณจะสร้างคำศัพท์ VBA และสามารถเขียนมาโครได้เร็ว แม่นยำยิ่งขึ้น และมีพลังมากกว่าที่คุณจะบันทึกได้

เมื่อคุณติดขัด การค้นหาโดย Google เป็นวิธีที่รวดเร็วในการตอบคำถาม VBA ของคุณ และ ข้อมูลอ้างอิง Excel VBA ของ Microsoft สามารถเป็นประโยชน์ได้หากคุณยินดีที่จะเจาะลึกเพื่อหาคำตอบทางเทคนิค

เมื่อคุณคุ้นเคยกับพื้นฐานแล้ว คุณสามารถเริ่มใช้ VBA สำหรับสิ่งต่างๆ เช่น ส่งอีเมลจาก Excel การส่งออกงาน Outlook และการแสดงข้อมูลพีซีของคุณ

วิธีแก้ไขเส้น Dead Pixel บนทีวี
แบ่งปัน แบ่งปัน ทวีต อีเมล นี่คือเหตุผลที่ FBI ออกคำเตือนสำหรับ Hive Ransomware

FBI ได้ออกคำเตือนเกี่ยวกับ ransomware ที่น่ารังเกียจโดยเฉพาะ นี่คือเหตุผลที่คุณต้องระวัง Hive ransomware เป็นพิเศษ

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • ผลผลิต
  • สเปรดชีต
  • Microsoft Excel
  • Microsoft Office 2016
  • มาโคร
  • บทเรียนการเข้ารหัส
เกี่ยวกับผู้เขียน แล้วออลไบรท์(506 บทความที่ตีพิมพ์)

Dann เป็นที่ปรึกษาด้านกลยุทธ์เนื้อหาและการตลาดที่ช่วยให้บริษัทต่างๆ สร้างความต้องการและโอกาสในการขาย เขายังบล็อกเกี่ยวกับกลยุทธ์และการตลาดเนื้อหาที่ dannalbright.com

เพิ่มเติมจาก Dann Albright

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก