ระบุค่าเริ่มต้นสำหรับพารามิเตอร์เสริม
คุณยังสามารถระบุค่าเริ่มต้นสำหรับพารามิเตอร์เสริมได้ ในตัวอย่างต่อไปนี้ ถ้าพารามิเตอร์ทางเลือกไม่ถูกส่งไปที่กระบวนงานฟังก์ชัน ค่าเริ่มต้นจะถูกส่งกลับ
ข้อความรายการย่อย (xAsString, OptionalyAs_
จำนวนเต็ม=12345)
List1.AddItemx
List1.AddItemy
สิ้นสุดย่อย
PRivateSubCommand1_คลิก()
strName=yourname 'ไม่ได้ระบุพารามิเตอร์ที่สอง'
CallListText(strName) 'เพิ่ม "ชื่อของคุณ" และ "12345"
สิ้นสุดย่อย
การใช้จำนวนพารามิเตอร์ที่ไม่แน่นอน โดยทั่วไป จำนวนพารามิเตอร์ในการเรียกขั้นตอนควรเท่ากับจำนวนพารามิเตอร์ในคำอธิบายขั้นตอน คุณสามารถใช้คำสำคัญ ParamArray เพื่อระบุว่าขั้นตอนจะยอมรับพารามิเตอร์จำนวนเท่าใดก็ได้ ดังนั้นคุณจึงสามารถเขียนฟังก์ชัน Sum เพื่อคำนวณผลรวมได้ดังนี้:
DimxAsInteger
DimyAsInteger
DimintSumAsInteger
ผลรวมย่อย (ParamArrayintNums())
สำหรับแต่ละxInintNums
y=yx
เน็กซ์เอ็กซ์
intSum=y
สิ้นสุดย่อย
PrivateSubCommand1_คลิก()
ผลรวม 1,3,5,7,8
List1.AddItemintSum
สิ้นสุดย่อย
สร้างคำสั่งง่ายๆ ด้วยพารามิเตอร์ที่มีชื่อ
สำหรับฟังก์ชัน คำสั่ง และวิธีการที่มีอยู่แล้วภายในจำนวนมาก Visual Basic ให้วิธีพารามิเตอร์ที่มีชื่อเพื่อส่งผ่านค่าพารามิเตอร์อย่างรวดเร็ว สำหรับพารามิเตอร์ที่มีชื่อ คุณสามารถระบุพารามิเตอร์จำนวนเท่าใดก็ได้ในลำดับใดก็ได้โดยการกำหนดค่าให้กับพารามิเตอร์ที่มีชื่อ เมื่อต้องการทำเช่นนี้ ให้พิมพ์อาร์กิวเมนต์ที่มีชื่อ ตามด้วยเครื่องหมายทวิภาค เครื่องหมายเท่ากับ และค่า (MyArgument:=SomeValue) สามารถจัดเรียงการมอบหมายเหล่านี้ในลำดับใดก็ได้ โดยคั่นด้วยเครื่องหมายจุลภาค โปรดทราบว่าลำดับของพารามิเตอร์ในตัวอย่างต่อไปนี้อยู่ตรงข้ามกับลำดับของพารามิเตอร์ที่ต้องการ:
FunctionListText(strNameAsString,ทางเลือกstrAddressAsString)
List1.AddItemstrName
List2.AddItemstrAddress
สิ้นสุดย่อย
PrivateSubCommand1_คลิก()
ListTextstrAddress:=12345,strName:=YourName
สิ้นสุดย่อย
ข้อมูลข้างต้นมีประโยชน์มากกว่าหากขั้นตอนมีพารามิเตอร์ทางเลือกหลายตัวที่ไม่จำเป็นต้องระบุเสมอไป
ยืนยันการสนับสนุนสำหรับพารามิเตอร์ที่มีชื่อ
หากต้องการทราบว่าฟังก์ชัน คำสั่ง และเมธอดใดสนับสนุนพารามิเตอร์ที่มีชื่อ ให้ใช้ฟังก์ชัน AutoQuickInfo ในหน้าต่างโค้ด ตรวจสอบ Object Browser หรือศึกษาการอ้างอิงภาษา โปรดคำนึงถึงประเด็นต่อไปนี้เมื่อใช้พารามิเตอร์ที่มีชื่อ:
วิธีการของวัตถุในไลบรารีวัตถุ Visual Basic (VB) ไม่สนับสนุนพารามิเตอร์ที่มีชื่อ คำสำคัญภาษาทั้งหมดในไลบรารีวัตถุ Visual Basic for Applications (VBA) รองรับพารามิเตอร์ที่มีชื่อ
ในรูปแบบไวยากรณ์ พารามิเตอร์ที่มีชื่อจะแสดงเป็นตัวหนาและตัวเอียง พารามิเตอร์อื่นๆ ทั้งหมดเป็นตัวเอียงเท่านั้น
สิ่งสำคัญคือต้องทราบว่า เมื่อใช้พารามิเตอร์ที่มีชื่อ คุณจะไม่สามารถละเว้นอินพุตของพารามิเตอร์ที่ต้องการได้ สามารถละเว้นได้เฉพาะพารามิเตอร์ทางเลือกเท่านั้น สำหรับไลบรารีออบเจ็กต์ Visual Basic (VB) และ Visual Basic for Applications (VBA) กล่องโต้ตอบ Object Browser จะใส่พารามิเตอร์เผื่อเลือกไว้ในวงเล็บเหลี่ยม []
ดู ByVal, ByRef, Optional และ ParamArray ในการอ้างอิงภาษา สำหรับรายละเอียด
ภาพรวมโครงสร้างการควบคุม
ด้วยโครงสร้างการควบคุม สามารถควบคุมการไหลของการทำงานของโปรแกรมได้ หากไม่ได้ตรวจสอบคำสั่ง control flow โปรแกรมจะรันผ่านคำสั่งเหล่านี้จากซ้ายไปขวาและบนลงล่าง โปรแกรมง่ายๆ บางโปรแกรมสามารถเขียนได้ด้วยโฟลว์ทางเดียวเท่านั้น และโฟลว์บางตัวสามารถควบคุมได้โดยลำดับความสำคัญของตัวดำเนินการ แต่ประสิทธิภาพและประโยชน์ของภาษาการเขียนโปรแกรมใดๆ มาจากความสามารถในการเปลี่ยนลำดับของคำสั่งผ่านโครงสร้างและลูป
โครงสร้างการตัดสินใจ
ขั้นตอน Visual Basic สามารถทดสอบนิพจน์แบบมีเงื่อนไขแล้วดำเนินการต่างๆ ตามผลการทดสอบ
โครงสร้างการตัดสินใจที่ Visual Basic รองรับคือ:
1.ถ้า...แล้ว
2.ถ้า...แล้ว...อย่างอื่น
3.เลือกกรณี
ถ้า...แล้ว
ใช้โครงสร้าง If...Then เพื่อดำเนินการคำสั่งตั้งแต่หนึ่งคำสั่งขึ้นไปอย่างมีเงื่อนไข สามารถใช้ไวยากรณ์บรรทัดเดียวและไวยากรณ์บล็อกหลายบรรทัดได้:
ถ้าเงื่อนไขแล้วแถลงการณ์
ถ้าเงื่อนไขแล้ว
งบ
สิ้นสุดถ้า
โดยปกติเงื่อนไขจะเป็นการเปรียบเทียบ แต่อาจเป็นนิพจน์ใดๆ ที่คำนวณค่าตัวเลขได้ Visual Basic ตีความค่านี้เป็น True หรือ False: ค่าศูนย์คือ False และค่าที่ไม่ใช่ศูนย์ใดๆ ถือเป็น True ถ้าเงื่อนไขเป็น True Visual Basic จะดำเนินการคำสั่งทั้งหมดที่ตามหลังคำสำคัญThen คุณสามารถดำเนินการคำสั่งตามเงื่อนไขโดยใช้ไวยากรณ์บรรทัดเดียวหรือหลายบรรทัด (สองตัวอย่างต่อไปนี้เทียบเท่ากัน):
IfanyDate<NowThenanyDate=ตอนนี้
IfanyDate<ตอนนี้แล้ว
anyDate=ตอนนี้
สิ้นสุดถ้า
หมายเหตุ: รูปแบบบรรทัดเดียวของ If...Then จะไม่ใช้คำสั่ง EndIf หากคุณต้องการรันโค้ดหลายบรรทัดเมื่อเงื่อนไขเป็น True คุณต้องใช้ไวยากรณ์บล็อกแบบหลายบรรทัด If...Then...EndIf
IfanyDate<ตอนนี้แล้ว
anyDate=ตอนนี้
Timer1.Enabled=False 'การควบคุมตัวจับเวลาถูกปิดใช้งาน
สิ้นสุดถ้า
ถ้า...แล้ว...อย่างอื่น
กำหนดบล็อกคำสั่งต่างๆ ด้วย If...Then...Else บล็อกและดำเนินการคำสั่งใดคำสั่งหนึ่ง:
ถ้าเงื่อนไข1แล้ว
[statementblock-1]
[ElseIfcondition2Then
[statementblock-2]]...
[อื่น
[statementblock-n]]
สิ้นสุดถ้า
VisualBasic ทดสอบเงื่อนไขแรก 1 ถ้าเป็นเท็จ Visual Basic จะทดสอบเงื่อนไข 2 และอื่นๆ จนกว่าจะพบเงื่อนไขที่เป็น True เมื่อพบเงื่อนไขที่เป็น True Visual Basic จะดำเนินการบล็อกคำสั่งที่เกี่ยวข้อง จากนั้นจึงดำเนินการโค้ดตาม EndIf เป็นตัวเลือก คุณสามารถรวมบล็อกคำสั่ง Else ที่ Visual Basic ดำเนินการได้ หากไม่มีเงื่อนไขใดที่เป็นจริง
If...Then...ElseIf เป็นเพียงกรณีพิเศษของ If...Then...Else โปรดทราบว่าคุณสามารถใช้ส่วนคำสั่ง ElseIf จำนวนเท่าใดก็ได้ หรือไม่มีเลยก็ได้ สามารถมีส่วนคำสั่ง Else ได้โดยไม่คำนึงว่ามีส่วนคำสั่ง ElseIf หรือไม่
ตัวอย่างเช่น แอปพลิเคชันสามารถดำเนินการตามตัวควบคุมในอาร์เรย์ของตัวควบคุมเมนูที่ถูกคลิก:
PrivateSubmnuCut_Click(IndexAsInteger)
IfIndex=0ตามด้วยคำสั่ง '"ตัด"
CopyActiveControl 'เรียกขั้นตอนทั่วไป
เคลียร์แอคทีฟคอนโทรล
ElseIfIndex=1จากนั้นคำสั่ง '"คัดลอก"
CopyActiveControl
ElseIfIndex=2จากนั้น 'ล้างคำสั่ง'
เคลียร์แอคทีฟคอนโทรล
มิฉะนั้น 'วางคำสั่ง
วาง ActiveControl
สิ้นสุดถ้า
สิ้นสุดย่อย
โปรดทราบ ว่าคุณสามารถเพิ่มบล็อก ElseIf เพิ่มเติมให้กับโครงสร้าง If...Then ได้เสมอ อย่างไรก็ตาม โครงสร้างนี้น่าเบื่อในการเขียนเมื่อ ElseIf แต่ละรายการเปรียบเทียบนิพจน์เดียวกันกับค่าตัวเลขที่แตกต่างกัน ในกรณีนี้ คุณสามารถใช้โครงสร้างการตัดสินใจ SelectCase ได้
สำหรับข้อมูลโดยละเอียด โปรดดูที่ "คำสั่ง If...Then...Else" ใน "คู่มืออ้างอิงภาษา VisualBasic6.0"
เลือกกรณี
VisualBasic จัดเตรียมโครงสร้าง SelectCase เพื่อแทนที่ If...Then...Else เพื่อให้สามารถดำเนินการเลือกดำเนินการบล็อกคำสั่งใดบล็อกหนึ่งได้ ความสามารถของคำสั่ง SelectCase นั้นคล้ายคลึงกับคำสั่ง If...Then...Else แต่ในกรณีของการเลือกหลายรายการ คำสั่ง SelectCase จะทำให้โค้ดอ่านได้ง่ายขึ้น
SelectCase จัดการนิพจน์การทดสอบเหนือโครงสร้างและประเมินผลเพียงครั้งเดียว จากนั้น Visual Basic จะเปรียบเทียบค่าของนิพจน์กับค่าของแต่ละกรณีในโครงสร้าง หากเท่ากัน บล็อกคำสั่งที่เกี่ยวข้องกับ Case จะถูกดำเนินการ
เลือกนิพจน์กรณีทดสอบ
[รายการนิพจน์กรณีและปัญหา1
[statementblock-1]]
[รายการนิพจน์กรณีและปัญหา2
[statementblock-2]]
-
-
-
[กรณีอื่น
[statementblock-n]]
สิ้นสุดการเลือก
แต่ละรายการนิพจน์คือรายการของค่าหนึ่งหรือหลายค่า หากมีหลายค่าในรายการ ให้คั่นค่าด้วยเครื่องหมายจุลภาค แต่ละคำสั่งบล็อกมีคำสั่งเป็นศูนย์หรือมากกว่า
หากมีมากกว่าหนึ่งตัวพิมพ์ที่ตรงกับนิพจน์ทดสอบ เฉพาะบล็อกคำสั่งที่เกี่ยวข้องกับตัวพิมพ์แรกที่ตรงกันเท่านั้นที่จะถูกดำเนินการ หากไม่มีค่าในรายการนิพจน์ที่ตรงกับนิพจน์ทดสอบ Visual Basic จะดำเนินการคำสั่งในส่วนคำสั่ง CaseElse (เป็นทางเลือก)
ตัวอย่างเช่น สมมติว่าคุณต้องการเพิ่มคำสั่งลงในเมนูแก้ไขในตัวอย่าง If...Then...Else คุณสามารถเพิ่มส่วนคำสั่ง ElseIf สำหรับสิ่งนี้ หรือใช้ SelectCase เพื่อเขียนฟังก์ชัน:
PrivateSubmnuCut_Click(IndexAsInteger)
เลือก CaseIndex
คำสั่ง Case0 'ตัด'
CopyActiveControl 'เรียกขั้นตอนทั่วไป
เคลียร์แอคทีฟคอนโทรล
กรณีที่ 1 คำสั่ง 'คัดลอก'
CopyActiveControl
กรณีที่ 2 คำสั่ง 'ล้าง'
เคลียร์แอคทีฟคอนโทรล
กรณีที่ 3 'คำสั่งวาง
วาง ActiveControl
CaseElse
frmFind.Show 'แสดงกล่องโต้ตอบที่พบ
สิ้นสุดการเลือก
สิ้นสุดย่อย
โปรดทราบว่า โครงสร้าง SelectCase จะประเมินนิพจน์ที่จุดเริ่มต้นในแต่ละครั้ง โครงสร้าง If...จากนั้น...Else จะประเมินนิพจน์ที่แตกต่างกันสำหรับแต่ละคำสั่ง ElseIf คุณสามารถแทนที่โครงสร้าง If...จากนั้น...Else ด้วยโครงสร้าง SelectCase ได้ก็ต่อเมื่อคำสั่ง If และคำสั่ง ElseIf แต่ละคำสั่งประเมินนิพจน์เดียวกัน
-