/ / Excel VBA Function และ Sub

Excel VBA ฟังก์ชันและย่อย

ฟังก์ชัน | ตำบล

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

ฟังก์ชัน

ถ้าคุณต้องการ Excel VBA เพื่อดำเนินงานที่ส่งกลับผลลัพธ์คุณสามารถใช้ฟังก์ชันได้ วางฟังก์ชันลงในโมดูล (ใน Visual Basic Editor คลิกแทรกโมดูล) ตัวอย่างเช่นฟังก์ชันที่มีชื่อ Area

Function Area(x As Double, y As Double) As Double

Area = x * y

End Function

คำอธิบาย: ฟังก์ชันนี้มีสองอาร์กิวเมนต์ (ชนิด Double) และชนิดส่งคืน (ส่วนหลัง As เป็น type double) คุณสามารถใช้ชื่อของฟังก์ชัน (พื้นที่) ในรหัสของคุณเพื่อระบุว่าต้องการให้ผลลัพธ์ใด (ที่นี่ x * y)

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

วางปุ่มคำสั่งในแผ่นงานของคุณและเพิ่มบรรทัดรหัสต่อไปนี้:

Dim z As Double

z = Area(3, 5) + 2

MsgBox z

คำอธิบาย: ฟังก์ชันส่งกลับค่าดังนั้นคุณต้อง "จับ" ค่านี้ในโค้ดของคุณ คุณสามารถใช้ตัวแปรอื่น (z) นี้ได้ จากนั้นคุณสามารถเพิ่มค่าอื่นในตัวแปรนี้ได้ (ถ้าต้องการ) สุดท้ายแสดงค่าโดยใช้ MsgBox

ผลลัพธ์เมื่อคุณคลิกปุ่มคำสั่งบนแผ่นงาน:

ผลลัพธ์ของฟังก์ชัน Excel VBA

ตำบล

ถ้าคุณต้องการ Excel VBA เพื่อดำเนินการบางอย่างคุณสามารถใช้ย่อย วางย่อยลงในโมดูล (ใน Visual Basic Editor คลิกแทรกโมดูล) ตัวอย่างเช่นย่อยที่มีชื่อ Area

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

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

วางปุ่มคำสั่งในแผ่นงานของคุณและเพิ่มบรรทัดรหัสต่อไปนี้:

Area 3, 5

ผลลัพธ์เมื่อคุณคลิกปุ่มคำสั่งบนแผ่นงาน:

ผลลัพธ์ย่อย Excel VBA

คุณสามารถมองเห็นความแตกต่างระหว่างฟังก์ชั่นได้หรือไม่และย่อยหรือไม่? ฟังก์ชันส่งคืนค่า 15 เราได้เพิ่มค่า 2 ให้กับผลลัพธ์นี้และแสดงผลลัพธ์สุดท้าย เมื่อเราเรียกว่าย่อยเราไม่สามารถควบคุมผล (15) ได้เนื่องจาก sub ไม่สามารถคืนค่า!

อ่านเพิ่มเติมได้ที่: