หากคำอธิบาย vba excel คำแนะนำและงานตามระเบียบ ถ้าเงื่อนไขแล้วนิพจน์
ถ้า ... แล้วก็ ... คำสั่งอื่น
บทเรียนนี้จะทุ่มเทให้กับหัวข้อเช่น - โอเปอเรเตอร์ โดยเฉพาะอย่างยิ่งเราจะทำความคุ้นเคยกับตัวดำเนินการ If ... จากนั้น ... Else รวมถึงทำความคุ้นเคยกับตัวดำเนินการเลขคณิตและการเปรียบเทียบโดยที่ตัวดำเนินการ If ... จากนั้น ... Else ไม่สามารถใช้กับตัวดำเนินการได้ สูงสุด.
Visual Basic มีโอเปอเรเตอร์ที่แตกต่างกันจำนวนมากพอสมควร บางตัวสามารถต้มสมองของโปรแกรมเมอร์ที่ช่ำชองได้ เพื่อไม่ให้ "เดือด" เราจะพิจารณาเฉพาะโอเปอเรเตอร์พื้นฐานที่สุดที่โปรแกรมทำงาน 95% เราจะศึกษาโอเปอเรเตอร์ที่เหลือตามความจำเป็น ดังนั้นคุณไม่จำเป็นต้องจำตำราเรียนทั้งเล่มและไปต่อได้ทันที สู่การฝึกปฏิบัติ
โดยการโพสต์บทเรียนนี้ ฉันหมายความว่าคุณมีความรู้ด้านคณิตศาสตร์ระดับประถมศึกษา
ความรู้แบบไหน? นี่คือตัวอย่างที่เราลบ บวก คูณ ... คุณจำได้ไหม? ดี! ดังนั้นยังมีดินปืนอยู่ในขวด
ก่อนที่คุณจะเริ่มศึกษา if ... แล้วก็ ... ตัวดำเนินการอื่น คุณต้องทำความคุ้นเคยกับตัวดำเนินการเลขคณิตและตรรกะ โดยที่ if ... จากนั้น ... ตัวดำเนินการอื่นไม่สามารถใช้จากมุมมองของความลึก ฝึกฝน. เอาล่ะ คำแนะนำและคำพูดที่น่าเบื่อพอแล้ว นั่งลงและลงมือทำธุรกิจได้เลย!
ตัวดำเนินการเลขคณิต
ด้วยความช่วยเหลือของโอเปอเรเตอร์เหล่านี้ คุณสามารถ; หาร คูณ บวก ฯลฯ
ทุกอย่างเรียบง่ายเหมือนในโรงเรียนประถม
+ (เพิ่มเติม)
- (การลบ)
* (คูณ)
/ (หารด้วยเศษ) ที่โรงเรียนป้ายกองคือป้ายนี้ :
จำความแตกต่างเหล่านี้และอย่าสับสน
\ (การหารจำนวนเต็ม ไม่มีเศษ)
ตัวดำเนินการเปรียบเทียบ
สิ่งเหล่านี้เป็นตัวดำเนินการที่สำคัญทีเดียว ด้วยตัวดำเนินการเหล่านี้ คุณสามารถเปรียบเทียบตัวเลข สตริง และข้อมูลอื่นๆ หากไม่มีตัวดำเนินการเปรียบเทียบ จะไม่สามารถสร้างตรรกะหรือการแยกสาขาในโปรแกรมได้
สิ่งสำคัญคือต้องจำไว้ว่าตัวดำเนินการเปรียบเทียบจะเปรียบเทียบสองนิพจน์และส่งกลับบูลีนของแบบฟอร์ม True (หากเงื่อนไขเป็นจริง) และ False (หากเงื่อนไขไม่เป็นความจริง)
ทรู แปลจากภาษาอังกฤษแปลว่า - ทรู
แปลเป็นเท็จจากภาษาอังกฤษหมายถึง - False
ในทันทีอาจดูเหมือนเข้าใจยาก แต่อย่ากังวล อีกสักครู่คุณจะเข้าใจว่าปีศาจทั้งหมดนี้หมายถึงอะไร
= (เท่ากับ)
ค่าของนิพจน์แรกเท่ากับค่าของนิพจน์ที่สอง หรืออาจเป็นผลลัพธ์ของการบวก / การลบ / ... ของการคำนวณสองครั้ง
<>
(ความไม่เท่าเทียมกัน)
ค่าของนิพจน์แรกไม่เท่ากับค่าของนิพจน์ที่สอง
<
(เล็กกว่า)
ค่าของนิพจน์แรกน้อยกว่าค่าของนิพจน์ที่สอง
>
(มากกว่า)
ค่าของนิพจน์แรกมากกว่าค่าของวินาที
<=
(น้อยกว่าหรือเท่ากับ)
ค่าของนิพจน์แรกน้อยกว่าหรือเท่ากับค่าของวินาที
>=
(มากกว่าหรือเท่ากับ)
ค่าของนิพจน์แรกมากกว่าหรือเท่ากับค่าของวินาที
ฉันรู้ ฉันเห็นว่าคุณกลัวแล้ว อันที่จริง ไม่มีอะไรน่ากลัวเลย!
อ่านต่อไปและคุณจะเห็นว่าทุกอย่างค่อนข้างง่าย
ด้านล่างนี้ เราจะสำรองข้อมูลทุกอย่างอย่างละเอียดพร้อมตัวอย่างและในทางปฏิบัติ
ดังนั้นเราจึงตรวจสอบตัวดำเนินการเลขคณิตและตรรกะ ตอนนี้คุณสามารถไปที่ตัวดำเนินการ If ... แล้วก็ ... อื่นได้โดยตรง
ถ้า ... แล้ว ... คำสั่งอื่น
ขั้นแรก เรามาดูกันว่าคำของโอเปอเรเตอร์หมายถึงอะไรเมื่อแปลจากภาษาอังกฤษเป็นภาษารัสเซีย
if แปลว่า If
แล้วแปลว่าTo
Else แปลเป็น Else
คำสั่ง If ... Then ... Else ใช้สำหรับอะไร?
เมื่อใช้ตัวดำเนินการนี้ คุณสามารถแยกโปรแกรมได้ หากไม่มีตัวดำเนินการนี้ จะไม่สามารถเขียนโปรแกรมที่จริงจังได้
มาดูตัวอย่างทั่วไปกัน
คอมพิวเตอร์จัดการกับคำสั่ง if ... อย่างไร?
สมมติว่าเรามีสองตัวแปร:
Dim var1 = 10 Dim var2 = 5
และสมมุติว่าเรามีเงื่อนไขว่า
ถ้า var1> var2 แล้ว MsgBox ("ใช่ var1 มากกว่า var2") สิ้นสุดถ้า
เงื่อนไขข้างต้นทำงานอย่างไร?
คอมพิวเตอร์จะดูตัวแปร var1 และ var2 หาก var1 มากกว่า var2 จริง เงื่อนไขจะเป็นจริง (True) และคอมพิวเตอร์จะแสดง MsgBox
หากเงื่อนไขไม่เป็นความจริง (เท็จ) คอมพิวเตอร์จะไม่แสดง MsgBox
คุณสามารถตรวจสอบได้โดยเปลี่ยนค่าของตัวแปรเป็นตัวเลขอื่นเพื่อให้เงื่อนไขไม่เป็นจริงเราจะไม่เห็น MsgBox
ความสนใจ!
เพื่อศึกษาตัวอย่างมีความจำเป็น
หลังจากสร้างโปรเจ็กต์บนแบบฟอร์มแล้ว คุณต้องดับเบิลคลิกที่ปุ่มด้วยปุ่มซ้ายของเมาส์ โปรแกรมแก้ไขโค้ดจะเปิดขึ้น โดยมีเคอร์เซอร์อยู่ในตำแหน่งที่คุณต้องการแทรกโค้ดจากตัวอย่างด้านล่าง
หลังจากใส่รหัสแล้ว คุณต้องดูผลลัพธ์ด้วยการคลิกที่ปุ่มที่อยู่ในแบบฟอร์ม
ตัวอย่างของ
ต่อไปนี้จะเป็นตัวอย่างในลำดับต่อไปนี้
ตัวดำเนินการเลขคณิต
+ (เพิ่มเติม)
- (การลบ)
* (คูณ)
/ (แผนก)
สปอยเลอร์: ตัวอย่างเลขคณิต - CLICK
+ นอกจากนี้:
"ตัวอย่างแสดงวิธีที่คุณสามารถเพิ่มตัวเลขสองตัว Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 + chislo2 MsgBox (ผลลัพธ์)
- การลบ:"ตัวอย่างแสดงให้เห็นว่าคุณจะได้รับผลต่างของตัวเลขสองตัวได้อย่างไร (การลบ) Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 - chislo2 MsgBox (ผลลัพธ์)
* การคูณ:"ตัวอย่างแสดงให้เห็นว่าคุณสามารถคูณตัวเลขหนึ่งด้วย Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 * chislo2 MsgBox (ผลลัพธ์)
/ แผนก:"ตัวอย่างแสดงให้เห็นว่าคุณสามารถหารตัวเลขหนึ่งด้วย Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 / chislo2 MsgBox (ผลลัพธ์)
ตัวดำเนินการเปรียบเทียบ
= (เท่ากับ)
<>
(ความไม่เท่าเทียมกัน)
<
(เล็กกว่า)
>
(มากกว่า)
<=
(น้อยกว่าหรือเท่ากับ)
>=
(มากกว่าหรือเท่ากับ)
สปอยเลอร์: ตัวดำเนินการเปรียบเทียบ - CLICK
= เท่ากับ:
"ตัวอย่างแสดงให้เห็นว่าคุณจะทราบได้อย่างไรว่าข้อความในตัวแปรเท่ากับข้อความอื่นที่เราระบุหรือไม่ Dim stroka As String =" Hello NubClub! "" หาก stroka เท่ากับข้อความในเครื่องหมายคำพูดคู่ แสดงให้ฉันเห็น MsgBox ถ้า stroka = "สวัสดี NubClub!" จากนั้น MsgBox ("ตัวแปรนี้เท่ากับข้อความที่เราต้องการ!") สิ้นสุด If
<>ความไม่เท่าเทียมกัน:"ตัวอย่างแสดงให้เห็นว่าคุณจะทราบได้อย่างไรว่าข้อความในตัวแปรเท่ากับข้อความอื่นที่เราระบุ Dim stroka As String =" Hello NubClub! "" หาก stroka ไม่เท่ากับข้อความในเครื่องหมายคำพูดคู่ แสดงให้ฉันเห็น MsgBox ถ้า stroka<>"ฉันเป็นโปรแกรมเมอร์มือใหม่" จากนั้น MsgBox ("ข้อความในตัวแปร stroka ไม่เท่ากับข้อความในเครื่องหมายคำพูด!") สิ้นสุด If
< Меньше:"ตัวอย่างแสดงให้เห็นว่าคุณสามารถเปรียบเทียบตัวเลขสองจำนวนได้อย่างไร Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" หาก chislo2 น้อยกว่า chislo1 ให้แสดง MsgBox หาก chislo2< chislo1 Then MsgBox("Значение переменной chislo2 меньше значения переменной chislo1") End If
> เพิ่มเติม:"ตัวอย่างแสดงให้เห็นว่าคุณสามารถเปรียบเทียบตัวเลขสองจำนวนได้อย่างไร Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" หาก chislo1 มากกว่า chislo2 ให้แสดง MsgBox หาก chislo1> chislo2 จากนั้น MsgBox ("ค่าของตัวแปร chislo1 มากกว่า ค่าของตัวแปร chislo2") สิ้นสุด If
<= Меньше или равно:"ตัวอย่างแสดงให้เห็นว่าคุณสามารถเปรียบเทียบตัวเลขสองจำนวนได้อย่างไร Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" หาก chislo2 น้อยกว่าหรือเท่ากับ chislo1 ให้แสดง MsgBox หาก chislo2<= chislo1 Then MsgBox("Значение переменной chislo2 меньше или равно значению переменной chislo1") End If
> = มากกว่าหรือเท่ากับ:"ตัวอย่างแสดงให้เห็นว่าคุณสามารถเปรียบเทียบตัวเลขสองจำนวนได้อย่างไร Dim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" หาก chislo1 มากกว่าหรือเท่ากับ chislo2 ให้แสดง MsgBox หาก chislo1> = chislo2 จากนั้น MsgBox ("ค่าของตัวแปร chislo1 มากกว่าหรือเท่ากับค่าของตัวแปร chislo2" ) สิ้นสุด If
ถ้า ... แล้วก็ ... คำสั่งอื่น - การแตกสาขา
ข้างบนก็สวย ตัวอย่างง่ายๆโดยใช้เงื่อนไข If ... แล้ว เช่น ไม่มีการแตกแขนงและไม่มีอื่น
ทีนี้ลองมาดูตัวอย่างการแตกแขนงกันดู พวกมันซับซ้อนกว่าเล็กน้อย แต่คุณไม่สามารถไปไหนได้โดยไม่มีพวกมัน
โดยพื้นฐานแล้ว ด้วยการใช้ Else ตัวอย่างทั้งหมดจะยังคงเหมือนเดิมกับด้านบน โดยจะเพิ่มเฉพาะการแตกสาขาย่อยของโปรแกรมเท่านั้น
จะเพิ่มอะไร?
หาก MsgBox ก่อนหน้านี้ปรากฏขึ้นเฉพาะเมื่อเงื่อนไขเป็นจริง ให้ใช้ Else คุณสามารถเรียก MsgBox แม้ว่าเงื่อนไขจะไม่เป็นความจริง
และเป็นตัวอย่าง
"ตัวอย่างแสดงให้เห็นว่าคุณจะทราบได้อย่างไรว่าข้อความในตัวแปรเท่ากับข้อความอื่นที่เราระบุหรือไม่ Dim stroka As String =" Hello NubClub!" "ถ้า stroka ไม่เท่ากับข้อความในเครื่องหมายคำพูดคู่ ให้แสดง MsgBox พร้อมข้อความ - ตัวแปรไม่เท่ากับข้อความที่เรากำลังค้นหา! ถ้า stroka =" สวัสดี NubClub! "แล้ว MsgBox (" ตัวแปรจะเท่ากับ ข้อความที่เรากำลังมองหา!") อื่น MsgBox ( "ตัวแปรไม่เท่ากับข้อความที่เราต้องการ!") สิ้นสุด If
มีบางครั้งที่เรามีตัวแปรเดียวและหลายค่าพร้อมข้อความที่ต้องตรวจสอบ จะทำอย่างไรแล้ว? ถอดกางเกงแล้ววิ่ง!
ไม่ นี่ไม่ใช่วิธีการของเรา
มีวิธีแก้ปัญหาที่หรูหรากว่านี้ คุณสามารถทำให้เงื่อนไขของเราซับซ้อนได้โดยใช้ ElseIf และตรวจสอบบรรทัดได้มากเท่าที่คุณต้องการภายในขอบเขตที่เหมาะสมแน่นอน หากมีหลายบรรทัดลูปจะช่วยได้ซึ่งเราจะทำงานในบทเรียนต่อไป
มาดูตัวอย่างกัน
ลองนึกภาพว่าเราจำเป็นต้องสร้างตรรกะสำหรับสัญญาณไฟจราจรเพื่อให้ทำงานและแสดงสีได้
ทำอย่างไร?
ไม่ยากเลย ยกตัวอย่าง
โครงสร้างการควบคุม VBA พื้นฐาน:
ถ้าแล้วอย่างอื่น "สิ้นสุดถ้าคำสั่งควบคุม
คำสั่งนี้เปลี่ยนลำดับการดำเนินการของคำสั่งขึ้นอยู่กับผลของการตรวจสอบเงื่อนไขที่กำหนด (หรือชุดของเงื่อนไข)
ตัวอย่าง:
ทดสอบย่อยถ้าแล้ว ()
iData = "ปาชูลกา"
ถ้า iData = "Excel" แล้ว
MsgBox "คุณจะไม่เห็นข้อความนี้!!!"
ElseIf iData = "Office" แล้ว
MsgBox "ขออภัย คุณจะไม่เห็นข้อความนี้เช่นกัน !!!"
อื่น
MsgBox "ข้อความนี้จะปรากฏอยู่ดี", iData
จบถ้า
ความคิดเห็น:
ถ้า - คำสำคัญ, ระบุการเริ่มต้นของเช็ค
iData- ตัวแปรที่มีค่าจะถูกตรวจสอบ
แล้ว- คีย์เวิร์ดระบุจุดสิ้นสุดของเช็ค
MsgBox- ข้อความ
อื่นถ้า- คีย์เวิร์ดหมายถึงการเริ่มต้นเช็คใหม่
แล้ว- คำสำคัญระบุจุดสิ้นสุดของการตรวจสอบเพิ่มเติม
MsgBox- ข้อความ
อื่น- คำหลักที่แสดงถึงการสิ้นสุดของกลุ่มคำสั่งที่ดำเนินการด้วยผลการตรวจสอบที่เป็นบวก และจุดเริ่มต้นของกลุ่มคำสั่งที่ดำเนินการด้วยผลลัพธ์เชิงลบ
MsgBox- ข้อความ
จบถ้า
ในคำสั่ง If Then Else "End If คีย์เวิร์ด อื่นถ้าและ อื่นเป็นทางเลือก
สำหรับคำสั่งควบคุมถัดไป
คำแนะนำนี้ช่วยให้คุณสามารถดำเนินการบางอย่างได้ตามจำนวนที่ต้องการ คำแนะนำเหล่านี้มักเรียกว่าลูป
ตัวอย่าง:
ย่อย TestForNext ()
สำหรับ iCount = 1 ถึง 100 ขั้นตอนที่ 2
ผม = ผม + 1
ต่อไป
ความคิดเห็น:
สำหรับ
iCount- ตัวแปรที่กำหนดจำนวนรอบซ้ำ
1
- ค่าเริ่มต้นของตัวนับ
ถึง- คำหลักที่แยกค่าเริ่มต้นและสิ้นสุดของตัวนับ
100
- มูลค่าสุดท้ายของตัวนับ
ขั้นตอน- คีย์เวิร์ดที่กำหนดขั้นตอนของเคาน์เตอร์
2
- เคาน์เตอร์ขั้นบันได (จำนวน)
ต่อไป- คำหลัก เมื่อถึงซึ่งค่าตัวนับจะเปลี่ยนแปลงตามขนาดขั้นตอน หลังจากนั้นตัวควบคุมจะไปที่จุดเริ่มต้นของวงจรอีกครั้ง
MsgBox
ในคำสั่ง For Next คีย์เวิร์ด ขั้นตอนเป็นทางเลือก หากไม่มีขั้นตอนของตัวนับจะเท่ากับ 1
สำคัญขั้นตอนเคาน์เตอร์ต้องเป็นตัวเลข หากกำหนดขั้นตอนของตัวนับเป็นจำนวนลบ ค่าของตัวนับจะลดลงในแต่ละรอบ
ตัวอย่างด้วยการนับถอยหลัง:
ย่อย TestForNext2 ()
สำหรับ iCount = 300 ถึง 1 ขั้นตอน -3
ผม = ผม + 1
ถ้า iCount = 153 จากนั้นออกจาก For
ถัดไป iCount
MsgBox "จำนวนครั้ง:" & i
ให้ความสนใจกับ:
ถ้า iCount = 153 แล้ว- ในโค้ด VBA นี้ เราได้ใช้คำสั่ง If Then Else ที่ทราบอยู่แล้ว
ออกสำหรับ
ถัดไป iCount- รหัสประกอบด้วยตัวแปร (ตัวนับ) ซึ่งอยู่หลังคำหลัก ไวยากรณ์นี้มักจะใช้สำหรับ คำจำกัดความของภาพสิ้นสุดลูปหากมีคำแนะนำเพียงพอในโค้ด VBA
ในขณะที่คำชี้แจงการควบคุมเวนด์
คำแนะนำนี้ช่วยให้คุณสามารถดำเนินการบางอย่างได้ตราบเท่าที่ตรงตามเงื่อนไขที่กำหนด
ตัวอย่าง:
Sub TestWhileWend ()
ในขณะที่ iCount iCount = iCount + 1
เวนด์
ความคิดเห็น:
ในขณะที่- คีย์เวิร์ดที่หมายถึงจุดเริ่มต้นของวัฏจักร
iCount - เงื่อนไขที่จะดำเนินการตามคำสั่งนี้
เวนด์
MsgBox- ข้อความเกี่ยวกับจำนวนการทำซ้ำ
ทำคำสั่งควบคุมลูป
คำแนะนำนี้ช่วยให้คุณดำเนินการบางอย่างได้ไม่เฉพาะตราบใดที่ตรงตามเงื่อนไขที่ระบุ แต่ยังดำเนินการเกือบตลอดเวลาจนกว่าจะตรงตามเงื่อนไขที่ระบุ
ตัวอย่าง:
ย่อย TestDoLoop ()
ทำจนกว่า iCount> = 100
iCount = iCount + 1
ห่วง
MsgBox "จำนวนครั้ง:" & iCount
ความคิดเห็น:
ทำ- คีย์เวิร์ดที่หมายถึงจุดเริ่มต้นของวัฏจักร
จนกระทั่ง- คำสำคัญที่แสดงถึงการมีอยู่ของเงื่อนไข
iCount> = 100- เงื่อนไขที่จะดำเนินการตามคำสั่งนี้
ห่วง- คีย์เวิร์ดที่หมายถึงจุดจบของวัฏจักร
MsgBox- ข้อความเกี่ยวกับจำนวนการทำซ้ำ
ย่อย TestDoLoop2 ()
ทำ
iCount = iCount + 1
ถ้า iCount = 50 ให้ออกจาก Do
วนซ้ำจนถึง iCount = 100
MsgBox "จำนวนครั้ง:" & iCount
ให้ความสนใจกับ:
ถ้า iCount = 50 แล้ว- ในโค้ด VBA นี้ เราใช้คำสั่ง If Then Else ที่ทราบอยู่แล้วอีกครั้ง
ออกจาก Do- คำสั่ง หมายถึง ออกจากวงจรก่อนกำหนด
iCount = 100- เงื่อนไขที่จะดำเนินการตามคำสั่งนี้
บันทึก:
เงื่อนไขที่ระบุในตอนท้ายของลูปรับประกันว่าจะดำเนินการอย่างน้อยหนึ่งครั้ง ระวังคำแนะนำในขณะที่ Wend, Do Loop เพราะหากเงื่อนไขถูกตั้งค่าไม่ถูกต้อง คุณจะได้รับ perpetuum mobile
เลือกกรณี "สิ้นสุดคำสั่งควบคุมการเลือก
คำสั่งนี้ ขึ้นอยู่กับผลลัพธ์ของค่าของตัวแปรหรือนิพจน์ รันโค้ดหนึ่งในหลาย ๆ ส่วน
ตัวอย่าง:
ย่อย TestSelectCase ()
เลือกกรณี iNumeric
กรณีที่ 1
กรณีที่ 2, 5
MsgBox "คุณไม่ควรเห็นข้อความนี้"
กรณีที่ 10 ถึง 13
MsgBox "คุณไม่ควรเห็นข้อความนี้"
กรณีคือ> 14
MsgBox "นี่คือข้อความที่คุณควรเห็น"
กรณีอื่น
MsgBox "ข้อความนี้จะปรากฏขึ้นหากตัวแปรเป็น End Select
ความคิดเห็น:
เลือกกรณี
iNumeric- ตัวแปรหรือนิพจน์ ค่าที่กำหนดทางเลือกของส่วนย่อยของโค้ด VBA ที่จะดำเนินการ
กรณีที่ 1- ตัวแปรแรกของค่าสำหรับการเปรียบเทียบ
หากค่าของตัวแปรตรงกัน โค้ดแฟรกเมนต์ที่ตามหลังเคสจะถูกดำเนินการ แต่ก่อนคีย์เคสถัดไป คำสั่งจะทำงานของมันให้เสร็จ มิฉะนั้น การตรวจสอบจะดำเนินต่อไป
กรณีที่ 2, 5- ตัวแปรที่สองของค่า
กรณีที่ 10 ถึง 13- ตัวแปรที่สามของความหมาย
กรณีคือ> 14- ตัวแปรที่สี่ของความหมาย
MsgBox- ข้อความที่จะแสดงในกรณีนี้
กรณีอื่น- คีย์เวิร์ดแสดงถึงการใช้โค้ดหากไม่มีตัวเลือกก่อนหน้านี้ที่ตรงกัน
สิ้นสุดการเลือก- คำสำคัญที่แสดงถึงจุดสิ้นสุดของคำสั่ง
ในคำสั่ง Select Case "End Select, คีย์เวิร์ด กรณีอื่นเป็นทางเลือก
สำหรับแต่ละคำสั่งควบคุมถัดไป
คำแนะนำนี้ช่วยให้คุณสามารถดำเนินการบางอย่างกับแต่ละวัตถุของตระกูลหรือองค์ประกอบอาร์เรย์
ตัวอย่างกับวัตถุ Range:
Sub TestForEachNextRange ()
ผม = ผม + 1
iCell.Value = "(! LANG: เซลล์ #" & i
!}
ต่อไป
MsgBox "จำนวนเซลล์:" & i
ความคิดเห็น:
แต่ละ- คำหลักที่แสดงถึงจุดเริ่มต้นของคำสั่ง
iCell- ตัวแปรที่กำหนดค่าขององค์ประกอบของกลุ่ม (อาร์เรย์หรือครอบครัว) ในการทำงานกับองค์ประกอบของอาร์เรย์ ตัวแปรจะต้องเป็นประเภทตัวแปร
ใน- คีย์เวิร์ดแยกตัวแปรออกจากกลุ่ม
ช่วง ("A1: C5")- กลุ่มคือ อาร์เรย์หรือกลุ่มของอ็อบเจ็กต์ จำนวนการวนซ้ำของลูปขึ้นอยู่กับจำนวนขององค์ประกอบที่รวมอยู่ในกลุ่ม ในการรันครั้งแรกของลูป ตัวแปรจะได้รับการกำหนดค่าขององค์ประกอบแรกสุดของกลุ่ม และ แล้วของที่ตามมาทั้งหมด
ต่อไป- คำหลัก เมื่อไปถึงซึ่งการควบคุมจะไปที่จุดเริ่มต้นของวงจรอีกครั้ง
MsgBox- ข้อความเกี่ยวกับจำนวนองค์ประกอบในกลุ่ม
ในกรณีนี้ การใช้การนับจำนวนเซลล์ในออบเจกต์ Range ไม่ใช่ วิธีที่ดีที่สุดเนื่องจากวัตถุนี้มีคุณสมบัติที่จะรับมือกับงานนี้ได้ดีกว่ามาก: วัตถุช่วง: คุณสมบัติและเมธอดของมัน
ตัวอย่างการจัดการวัตถุ Range:
การทดสอบย่อยสำหรับEachNextRangeChanges ()
สำหรับแต่ละ iCell ในช่วง ("A1: C5")
ผม = ผม + 1: iCell.Value = i
ถ้า iCell.Value 5 แล้ว
iCell.Font.Size = 15
iCell.Interior.ColorIndex = 50
ElseIf iCell.Value = 13 หรือ iCell.Value = 5 จากนั้น
iCell.Font.Size = 20
iCell.Interior.ColorIndex = 3
อื่น
iCell.Clear
จบถ้า
ให้ความสนใจกับ:
- ในโค้ด VBA นี้ เพื่อตรวจสอบค่าในเซลล์ เราใช้คำสั่ง If Then Else ที่ทราบอยู่แล้ว
- ขึ้นอยู่กับเงื่อนไขที่ผ่านการตรวจสอบ โค้ดบางส่วนจะถูกรันซึ่งใช้คุณสมบัติต่างๆ ของออบเจกต์ Range
ตัวอย่างกับกลุ่มเวิร์กชีต:
การทดสอบย่อยสำหรับEachNextSheet ()
สำหรับแต่ละ iList ในเวิร์กชีต
ผม = ผม + 1
iNameList = iNameList & Chr (10) & iList.Name
ต่อไป
MsgBox "จำนวนแผ่นงาน:" & i & Chr (10) & _
"ชื่อเวิร์กชีต:" & iNameList
ในกรณีนี้ การใช้การนับจำนวนแผ่นงานดังกล่าวไม่ใช่วิธีที่ดีที่สุด เนื่องจากวัตถุนี้มีคุณสมบัติที่จะรับมือกับงานนี้ได้ดีกว่ามาก
เงื่อนไขมีประโยชน์มากในการเขียนโปรแกรมเนื่องจากช่วยให้เราสามารถดำเนินการได้ขึ้นอยู่กับเกณฑ์ที่กำหนดไว้ (ใช้หลักการเดียวกันกับใน ถ้าฟังก์ชัน Excel)
ฟังก์ชันที่สำคัญที่สุดที่กำหนดเงื่อนไขคือ ถ้าและตอนนี้เราจะมาดูกันว่ามันทำงานอย่างไร:
ถ้า [CONDITION HERE] แล้ว "=> IF the condition is true, THEN" คำแนะนำ if "true" Else "=> OTHERWISE" คำแนะนำ if "false" End If
มาเริ่มปฏิบัติกันและกลับไปที่ตัวอย่างที่เราใช้ในกวดวิชาตัวแปร วัตถุประสงค์ของขั้นตอนนี้คือการเปิดกล่องโต้ตอบที่จะมีค่าจากสตริงที่ระบุในcell F5:
หากคุณป้อนตัวอักษรลงในเซลล์ F5ซึ่งจะส่งผลให้เกิดข้อผิดพลาด เราต้องการป้องกันไม่ให้สิ่งนี้เกิดขึ้น
ตัวแปรย่อย () "การประกาศตัวแปร Dim last_name As String, first_name As String, age As Integer, row_number As Integer" การกำหนดค่าให้กับตัวแปร row_number = Range ("F5") + 1 last_name = Cells (row_number, 1) first_name = เซลล์ (row_number , 2) อายุ = เซลล์ (row_number, 3) "กล่องโต้ตอบ MsgBox last_name &" "& first_name &", "& อายุ &" ปี "สิ้นสุดย่อย
มาเพิ่มเงื่อนไขที่จะตรวจสอบว่าค่าที่ป้อนอยู่ในเซลล์หรือไม่ F5ตัวเลขก่อนรันโค้ด
เราจะใช้ฟังก์ชัน เป็นตัวเลขเพื่อตรวจสอบสภาพ:
ตัวแปรย่อย () "หากค่าในวงเล็บ (เซลล์ F5) เป็นตัวเลข (และนี่คือหากเงื่อนไขถูกต้อง)" ให้ทำตามคำแนะนำที่ตามมา ถ้า IsNumeric (ช่วง ("F5")) จากนั้น "ประกาศตัวแปร Dim last_name As String , first_name As String, age As Integer, row_number As Integer "การกำหนดค่าให้กับตัวแปร row_number = Range (" F5 ") + 1 last_name = Cells (row_number, 1) first_name = Cells (row_number, 2) age = Cells ( row_number, 3) "กล่องโต้ตอบ MsgBox last_name &" "& first_name &", "& อายุ &" ปี "End If End Sub
เราต้องเขียนคำสั่งด้วยถ้าไม่ตรงตามเงื่อนไขที่เราตั้งไว้:
ตัวแปรย่อย () ถ้า IsNumeric (ช่วง ("F5")) จากนั้น "หากตรงตามเงื่อนไข" การประกาศตัวแปร Dim last_name เป็นสตริง, first_name เป็นสตริง, อายุเป็นจำนวนเต็ม, row_number เป็นจำนวนเต็ม "การกำหนดค่าให้กับตัวแปร row_number = ช่วง (" F5 ") + 1 last_name = เซลล์ (row_number, 1) first_name = เซลล์ (row_number, 2) age = เซลล์ (row_number, 3) "กล่องโต้ตอบ MsgBox last_name &" "& first_name &", "& อายุ &" ปี " อื่น" หากเงื่อนไขไม่ทำงาน "กล่องโต้ตอบ: Warning MsgBox" ค่าที่ป้อน "& ช่วง (" F5 ") &" ไม่ถูกต้อง! " "การลบเนื้อหาของเซลล์ช่วง F5 (" F5 ") ClearContents สิ้นสุดหากสิ้นสุด Sub
ตอนนี้ค่าที่ไม่ใช่ตัวเลขจะไม่ทำให้เกิดปัญหาใดๆ
การทำงานกับอาร์เรย์ของเราที่มีข้อมูล 16 แถว ขั้นตอนต่อไปของเราคือตรวจสอบว่าตัวแปร row_number "มากกว่าหรือเท่ากับ 2" และ "น้อยกว่าหรือเท่ากับ 17"
แต่ก่อนอื่น มาดูตัวดำเนินการเปรียบเทียบกันก่อน:
และตัวดำเนินการที่มีประโยชน์เหล่านี้:
ทีนี้มาเพิ่มเงื่อนไขข้อใดข้อหนึ่งข้างต้น และระหว่างตัวดำเนินการเปรียบเทียบ:
ตัวแปรย่อย () ถ้า IsNumeric (ช่วง ("F5")) แล้ว "ถ้าค่าตัวเลข Dim last_name As String, first_name As String, age As Integer, row_number As Integer row_number = Range (" F5 ") + 1 ถ้า row_number> = 2 และ row_number
หากเราต้องการทำให้มาโครใช้งานได้จริง เราสามารถแทนที่ 17 ให้กับตัวแปรที่จะมีจำนวนบรรทัด ซึ่งจะทำให้เราสามารถเพิ่มและลบแถวออกจากอาร์เรย์โดยไม่ต้องเปลี่ยนขีดจำกัดนี้ทุกครั้ง
ในการทำสิ่งนี้ เราต้องสร้างตัวแปร nb_rowsและเพิ่มฟังก์ชันนี้
ในกรณีนี้ เราใช้ฟังก์ชัน แผ่นงานFunction.CountAซึ่งคล้ายกับฟังก์ชัน COUNTAใน Excel เอง
เราต้องการให้ฟังก์ชันนี้นับจำนวนเซลล์ที่ไม่ว่างในคอลัมน์แรกโดยเขียนค่าผลลัพธ์ไปยังตัวแปร nb_rows:
ตัวแปรย่อย () ถ้า IsNumeric (ช่วง ("F5")) จากนั้น "IF NUMBER Dim last_name As String, first_name As String, age As Integer, row_number As Integer Dim nb_rows As Integer row_number = Range (" F5 ") + 1 nb_rows = WorksheetFunction.CountA (Range ("A: A")) "ฟังก์ชันสำหรับนับจำนวนแถว ถ้า row_number> = 2 และ row_number
อื่นถ้า
อื่นถ้าทำให้สามารถเพิ่มเงื่อนไขเพิ่มเติมหลังคำสั่ง IF:
ถ้า [CONDITION 1] แล้ว "=> IF condition 1 เป็นจริง THEN" คำสั่ง 1 ElseIf [CONDITION 2] จากนั้น "=> IF condition 1 เป็นเท็จ แต่เงื่อนไข 2 เป็นจริง THEN" คำสั่ง 2 Else "=> ELSE" ประโยคที่ 3 สิ้นสุด If
ถ้า สภาพ 1ดำเนินการ คำสั่ง 1จะดำเนินการและออกจากโอเปอเรเตอร์ ถ้า(ซึ่งขึ้นต้นด้วย ถ้าและลงท้ายด้วย End If) ถ้า สภาพ2ใช้ความหมาย " โกหก "จากนั้นก็จะถูกประหารชีวิต คำแนะนำ2และถ้ามันกลับมา " โกหก ", แล้ว คำสั่ง 3(ภายใต้ อื่น) จะถูกดำเนินการ
Sub scores_comment () "ตัวแปร Dim note As Integer, score_comment As String note = Range (" A1 ")" ความคิดเห็นขึ้นอยู่กับคะแนนที่ได้รับ หากหมายเหตุ = 6 จากนั้น score_comment = "คะแนนยอดเยี่ยม!" ElseIf note = 5 จากนั้น score_comment = "คะแนนดี" ElseIf note = 4 จากนั้น score_comment = "คะแนนที่น่าพอใจ" ElseIf note = 3 จากนั้น score_comment = "คะแนนไม่ดี" ElseIf note = 2 จากนั้น score_comment = "คะแนนไม่ดี" ElseIf note = 1 แล้ว score_comment = "คะแนนแย่มาก" Else score_comment = "คะแนนเป็นศูนย์" สิ้นสุดหาก "แสดงความคิดเห็นในเซลล์ B1 ช่วง (" B1 ") = score_comment End Sub
เลือก
มีทางเลือกอื่นในการใช้ ถ้าที่มีมากมาย อื่นถ้าคำแนะนำคือคำสั่ง เลือกซึ่งเหมาะกับสถานการณ์แบบนี้มากกว่า
ลองพิจารณาตัวอย่างของมาโครกับตัวดำเนินการ เลือก:
Sub scores_comment () "ตัวแปร Dim note As Integer, score_comment As String note = Range (" A1 ")" ความคิดเห็นตามคะแนนที่ได้รับ Select Case note "
เป็นที่น่าสังเกตว่าเราสามารถใช้ตัวดำเนินการเปรียบเทียบอื่นๆ ได้เช่นกัน:
กรณีคือ> = 6 "ถ้าค่า> = 6
ตัวอย่างที่มีความหมายต่างกัน:
กรณีคือ = 6, 7 "ถ้าค่า = 6 หรือ 7 กรณีคือ 6, 7" ถ้าค่าไม่ใช่ 6 หรือ 7 กรณีที่ 6 ถึง 10 "ถ้าค่า = ตัวเลขใดๆ จาก 6 ถึง 10
ตัวดำเนินการ VBA พื้นฐาน
ความคิดเห็น (0)
3.1. กฎการบันทึกของผู้ปฏิบัติงาน
เมื่อดำเนินการบันทึก คุณต้องปฏิบัติตามกฎต่อไปนี้:
แต่ละคำสั่งใหม่จะถูกเขียนในบรรทัดใหม่
หากต้องการเขียนตัวดำเนินการหลายตัวในบรรทัดเดียว ให้คั่นด้วยเครื่องหมายทวิภาค (:)
หากตัวดำเนินการไม่พอดีกับบรรทัดเดียว คุณต้องเว้นวรรคและขีดล่าง (_) ที่ท้ายบรรทัด จากนั้นดำเนินการต่อในส่วนที่ไม่พอดีกับบรรทัดถัดไป
3.2. ผู้ปฏิบัติงานที่ได้รับมอบหมาย
ตัวดำเนินการกำหนดจะใช้เมื่อจำเป็นต้องกำหนดค่าตัวแปรใหม่ มันมีไวยากรณ์ต่อไปนี้:
ชื่อตัวแปร= การแสดงออก
นิพจน์ทางด้านขวาจะได้รับการประเมินก่อน จากนั้นจึงกำหนดผลลัพธ์ให้กับตัวแปรทางด้านซ้าย
ตัวอย่างเช่น... เขียนนิพจน์ทางคณิตศาสตร์ต่อไปนี้โดยใช้ตัวดำเนินการมอบหมาย:
ใน VBA นิพจน์นี้สามารถเขียนเป็นตัวดำเนินการต่อไปนี้:
Y = a ^ (1/3) + (a ^ 2 + Exp (-b)) / (บาป (a) ^ 2-Log (b))
3 .3. ตัวดำเนินการ I / O
3 .3.1. ตัวดำเนินการและฟังก์ชัน MsgBox
โอเปอเรเตอร์ MsgBoxดำเนินการส่งออกข้อมูลในกล่องโต้ตอบและตั้งค่าโหมดรอสำหรับผู้ใช้ที่จะกดปุ่ม
มันมีไวยากรณ์ต่อไปนี้:
MsgBox ข้อความ [, ปุ่ม] [, หัวข้อ]
อาร์กิวเมนต์:
ข้อความ - อาร์กิวเมนต์ที่ต้องการระบุข้อความข้อมูลที่จะแสดงในหน้าต่าง สามารถประกอบด้วยบรรทัดข้อความหลายบรรทัด ต่อกันด้วยเครื่องหมาย & ... การใช้งานในอาร์กิวเมนต์นี้ คริส (13)นำไปสู่บรรทัดใหม่เมื่อแสดงข้อมูล
ปุ่ม - ค่าของอาร์กิวเมนต์นี้กำหนดหมวดหมู่ของปุ่มที่ปรากฏในหน้าต่าง ค่าของอาร์กิวเมนต์ของปุ่มยังกำหนดด้วยว่าไอคอนใด ๆ ที่ปรากฏในหน้าต่าง หากคุณไม่ได้ระบุปุ่มที่ควรแสดงในหน้าต่างข้อความ ค่าเริ่มต้นที่สอดคล้องกับปุ่ม OK จะถูกใช้ ตาราง 3.1 แสดงการรวมกันของปุ่มและไอคอนที่เป็นไปได้ในหน้าต่างข้อความ
หัวเรื่อง - ตั้งชื่อหน้าต่าง
การทำงาน MsgBoxส่งกลับจำนวนเต็มซึ่งระบุว่ามีการคลิกปุ่มใดในกล่องโต้ตอบ
ตารางที่ 3.1. ค่าที่ถูกต้องสำหรับตัวแปรปุ่ม
แสดง |
การโต้แย้ง |
ปุ่มตกลง |
|
ปุ่มตกลงและยกเลิก |
|
ปุ่มใช่และไม่ใช่ |
|
ใช่ ไม่ใช่ และปุ่มยกเลิก |
|
ปุ่มหยุด ทำซ้ำ และละเว้น |
VbAbortRetryIgnore |
ปุ่มทำซ้ำและยกเลิก |
|
ป้ายข้อมูล |
|
เครื่องหมายคำถาม |
|
เครื่องหมายอัศเจรีย์ |
ตัวอย่างเช่น... แสดงข้อความเกี่ยวกับวันที่ปัจจุบัน
MsgBox "วันนี้อยู่บนปฏิทิน" & วันที่ "โปรดทราบ"
เป็นผลให้หน้าต่างต่อไปนี้จะปรากฏขึ้น (รูปที่ 3.1)
หลังจากคลิกปุ่มตกลง กล่องข้อความจะปิดลง และการทำงานของโปรแกรมจะกลับมาทำงานต่อจากคำสั่งหลังการเรียก MsgBox ทันที
3.3.2. การทำงาน InputBox
การทำงาน InputBoxป้อนค่าตัวแปรโดยใช้หน้าต่างอินพุตและมีรูปแบบดังนี้:
ชื่อตัวแปร = InputBox (ข้อความ [, ชื่อเรื่อง] )
อาร์กิวเมนต์:
ข้อความ - อาร์กิวเมนต์ที่จำเป็น ตั้งค่าข้อความแสดงข้อมูลในหน้าต่าง ซึ่งมักจะอธิบายความหมายของค่าที่ป้อน
หัวเรื่อง - ตั้งชื่อหน้าต่าง
ตัวอย่างเช่น, ป้อนค่าของตัวแปร N จากแป้นพิมพ์ โดยมีค่าเริ่มต้นเป็น 10
ในการดำเนินการนี้ คุณสามารถใช้โอเปอเรเตอร์ต่อไปนี้:
N = InputBox ("ป้อน N", "ป้อนข้อมูลเริ่มต้น", 10)
เป็นผลให้หน้าต่างต่อไปนี้จะปรากฏขึ้นสำหรับการป้อนค่าของตัวแปร N (รูปที่ 3.2)
หากค่าเริ่มต้นเหมาะสมกับผู้ใช้ หลังจากคลิกปุ่มตกลง หน้าต่างป้อนข้อมูลจะปิดลง ตัวแปร N จะได้รับการกำหนดค่า 10 และการทำงานของโปรแกรมจะดำเนินต่อจากโอเปอเรเตอร์ทันทีหลังการโทร InputBox.
หากค่าเริ่มต้นไม่เหมาะกับผู้ใช้ ก่อนคลิกปุ่มตกลง คุณต้องป้อน ค่าที่ต้องการตัวแปร N
3 .4. คำสั่ง IF แบบมีเงื่อนไข
ในการใช้กระบวนการคำนวณการแยกสาขาใน VBA จะใช้ตัวดำเนินการ ถ้า… แล้ว… อย่างอื่นซึ่งเป็นรูปแบบการตรวจสภาพที่ง่ายที่สุด มันมีไวยากรณ์ต่อไปนี้:
ถ้าสภาพแล้วOPERATOR_1อีlseOPERATOR_2
OPERATOR_1จะถูกดำเนินการ if สภาพจริง มิฉะนั้น ดำเนินการ OPERATOR_2. ในกรณีนี้ คำสั่ง If… Then… Else จะถูกเขียนในหนึ่งบรรทัด
สภาพเป็นนิพจน์บูลีน ผลลัพธ์ของนิพจน์จะเป็นบูลีนเสมอ การแสดงออกอาจเป็นแบบง่ายหรือซับซ้อน เมื่อเขียนเงื่อนไขอย่างง่าย สามารถใช้การดำเนินการที่เป็นไปได้ทั้งหมดของความสัมพันธ์ที่ระบุในตารางที่ 1 ได้ 3.2.
ตาราง3 .2. ความสัมพันธ์เชิงตรรกะ
การดำเนินการ |
ชื่อ |
การแสดงออก |
ผลลัพธ์ |
จริงถ้า A เท่ากับ B |
|||
จริงถ้า A ไม่เท่ากับ B |
|||
จริงถ้า A มากกว่า B |
|||
จริงถ้า A น้อยกว่า B |
|||
มากกว่าหรือเท่ากับ |
จริงถ้า A มากกว่าหรือเท่ากับ B |
||
น้อยกว่าหรือเท่ากับ |
จริงถ้า A น้อยกว่าหรือเท่ากับ B |
เงื่อนไขที่ซับซ้อนเกิดขึ้นจากเงื่อนไขง่าย ๆ โดยใช้การดำเนินการเชิงตรรกะและวงเล็บ รายการของการดำเนินการทางตรรกะมีอยู่ในตาราง 3.3.
ตาราง3 .3. การดำเนินการเชิงตรรกะ
ชื่อ |
การแสดงออก |
ผลลัพธ์ |
|||
ตรรกะ |
|||||
ตรรกะและ |
|||||
ตรรกะOR |
ในคำสั่งแบบมีเงื่อนไข อนุญาตให้ใช้บล็อกคำสั่งแทนคำสั่งใดๆ ในกรณีนี้ ตัวดำเนินการตามเงื่อนไขคือ:
ถ้าสภาพแล้ว
OPERATOR_BLOCK_1
OPERATOR_BLOCK_2
จบฉันNS
สามารถตรวจสอบเงื่อนไขต่างๆ ได้ในคำสั่งแบบมีเงื่อนไข ในกรณีนี้ ตัวดำเนินการตามเงื่อนไขคือ:
ถ้าCONDITION_1แล้ว
OPERATOR_BLOCK_1
อื่นถ้าCONDITION_2แล้ว
OPERATOR_BLOCK_2
อื่น
จบถ้า
ตัวอย่างที่ 1... เขียนส่วนหนึ่งของโปรแกรมสำหรับอัลกอริธึมในรูปที่ 3.3.
ตัวอย่างที่ 2เขียนส่วนหนึ่งของโปรแกรมสำหรับอัลกอริธึมในรูปที่ 3.4.
3.5. เลือกคำสั่งกรณี
คำสั่ง Select Case สะดวกในการใช้งาน เมื่อคุณจำเป็นต้องดำเนินการต่างๆ ขึ้นอยู่กับค่าของนิพจน์บางอย่างที่มีชุดค่าที่ถูกต้องจำนวนจำกัด นอกจากนี้ยังหมายถึงคำสั่งแบบมีเงื่อนไข แต่มีรูปแบบที่แตกต่างกัน:
เลือกกรณีTESTED_EXPRESSION
กรณีVALUES_1
OPERATORS_1
กรณีค่านิยม_ 2
ผู้ประกอบการ_ 2
. . .
กรณีVALUES_N
ผู้ประกอบการ_NS
[ กรณีอื่น
มิฉะนั้น_ ผู้ประกอบการ]
สิ้นสุดการเลือก
TESTED_EXPRESSIONสามารถเป็นประเภทสเกลาร์ใดก็ได้ยกเว้นของจริง ค่านิยมประกอบด้วยจำนวนค่าหรือช่วงตามอำเภอใจ คั่นด้วยเครื่องหมายจุลภาค
ประเภทของ ค่านิยมต้องตรงกับประเภท TESTED_EXPRESSION.
ขั้นแรกให้คำนวณ TESTED_EXPRESSION... หากค่าตรงกับค่าใดค่าหนึ่ง VALUES_I, แล้ว OPERATORS_I สิ้นสุดการเลือก... หากค่าไม่ตรงกับค่าใดๆ VALUES_I, แล้ว อื่นๆ_OPERATORSและการควบคุมจะถูกโอนไปยังผู้ปฏิบัติงานที่ยืนอยู่ข้างหลัง สิ้นสุดการเลือก
ตัวอย่างเช่น.เขียนส่วนหนึ่งของโปรแกรมสำหรับอัลกอริธึมในรูปที่ 3.5 ซึ่งกำหนดค่าของตัวแปร S ขึ้นอยู่กับค่าของตัวแปร n
3.6. ตัวดำเนินการวนรอบ
ในการใช้กระบวนการคำนวณแบบวนซ้ำ เช่น การดำเนินการหลายตัวของตัวดำเนินการตั้งแต่หนึ่งตัวขึ้นไป ตัวดำเนินการวนรอบจะถูกใช้ สำหรับ… ต่อไปซึ่งมีไวยากรณ์ดังต่อไปนี้:
สำหรับCOUNTER = START_VALUENSoCON_VALUEขั้นตอนขั้นตอน
ตัวดำเนินการบล็อก
ตัวดำเนินการบล็อก
ต่อไปเคาน์เตอร์
วง For ... Next วนซ้ำค่าของตัวแปร เคาน์เตอร์ซึ่งเป็นพารามิเตอร์ของวงจรตั้งแต่เริ่มต้นจนถึงค่าสิ้นสุดด้วยขั้นตอนการเปลี่ยนแปลงที่ระบุ เพื่อให้แน่ใจว่าบล็อกของคำสั่งของ loop body จะถูกดำเนินการที่ค่าใหม่แต่ละค่าของตัวนับ ถ้า ขั้นตอนขั้นตอนไม่อยู่ในการก่อสร้างโดยปริยายจะถือว่าขั้นตอนคือ 1 ตามตัวดำเนินการ ออกสำหรับเป็นไปได้ที่จะออกจากคำสั่งวนซ้ำก่อน เคาน์เตอร์ถึงค่าสุดท้าย *
ในการวนซ้ำวัตถุจากกลุ่มของวัตถุที่คล้ายคลึงกัน เช่น เซลล์จากช่วงหรือองค์ประกอบอาร์เรย์ จะสะดวกที่จะใช้ตัวดำเนินการลูป สำหรับ ...แต่ละ… ต่อไป.
แต่ละธาตุในกลุ่ม
บล็อก_ ผู้ประกอบการ
ตัวดำเนินการบล็อก
ต่อไปธาตุ
ใน VBA ตัวดำเนินการลูปอื่น ๆ ใช้เพื่อจัดระเบียบลูปด้วยจำนวนการทำซ้ำที่กำหนดไว้ล่วงหน้า:
ลูปที่มีเงื่อนไขเบื้องต้น - ทำในขณะที่ … ห่วง,
ทำจนกระทั่ง … ห่วง;
วนซ้ำกับ postcondition - ทำ … ห่วงในขณะที่,
ทำ … ห่วงจนกระทั่ง.
ต่อไปนี้เป็นไวยากรณ์สำหรับคำสั่งวนรอบเหล่านี้:
"วนรอบด้วยเงื่อนไขเบื้องต้นทำ ในขณะที่ … ห่วง
ทำในขณะที่สภาพ
ตัวดำเนินการบล็อก
ตัวดำเนินการบล็อก
"วนรอบด้วยเงื่อนไขเบื้องต้นทำ จนกระทั่ง … ห่วง
ทำจนกระทั่งสภาพ
ตัวดำเนินการบล็อก
ตัวดำเนินการบล็อก
"วนซ้ำกับเงื่อนไขหลังทำ … วนรอบในขณะที่
บล็อก_ ผู้ประกอบการ
ตัวดำเนินการบล็อก
วนรอบในขณะที่สภาพ
"วนซ้ำกับเงื่อนไขหลังทำ … วนจน
บล็อก_ ผู้ประกอบการ
ตัวดำเนินการบล็อก
วนจนสภาพ
โอเปอเรเตอร์ ทำWฮิล ... ลูปให้การซ้ำซ้อนของบล็อกของคำสั่งตราบใดที่ สภาพเป็นที่เคารพและผู้ประกอบการ
ข่าวอื่นๆ
การใช้ตัวดำเนินการตามเงื่อนไขเป็นส่วนสำคัญของภาษาการเขียนโปรแกรมเกือบทุกภาษา และที่จริงแล้ว ทุกอย่างมาจากคณิตศาสตร์ ตั้งแต่แรกเริ่ม ภาษาโปรแกรมถูกสร้างขึ้นเพื่อใช้ในการแก้ปัญหาต่างๆ ฉันจะบอกทันทีว่าบทความนั้นน่าเบื่อ และไม่น่าสนใจ เนื่องจากมันเป็นไปไม่ได้ทางกายภาพที่จะบีบอะไรใหม่ ๆ จากการเขียนโปรแกรมโดยเฉพาะจากคำอธิบายของโอเปอเรเตอร์ ดังนั้น ในภาษา VBA จะใช้คำสั่ง if เพื่อทดสอบเงื่อนไข ซึ่งสามารถมีได้หลายรูปแบบ แต่ก่อนอื่น อารมณ์ขันเล็กน้อย….
กระต่ายกำลังวิ่งอยู่ในป่า และเราเห็นหมีกำลังอ่านหนังสือ กระต่ายถามว่า: "เท้าเปล่า คุณกำลังอ่านอะไรอยู่" เขาดูฉลาดตอบ: "ลอจิก" เฉียงมองอย่างแปลกใจถามว่า "ตรรกะคืออะไร" “ดูนั่นสิ” หมีพูด
- M: คุณมีการแข่งขันหรือไม่?
- ซี: ไม่
- ม : งั้นพี่ก็ไม่สูบ
- ซี: ใช่!
- ม : ไม่สูบก็ไม่เสียเงิน
- ซี: ถูกต้อง!
- M: งั้นคุณเดินไปรอบๆ สาวๆ เหรอ?
- Z: แน่นอน!
- ม: และเมื่อคุณเดินไปรอบๆ สาวๆ คุณก็เลยไม่ได้ไร้ความสามารถ!
- Z: ถูกต้องอีกครั้ง!
กระต่ายรู้สึกยินดีกับหนังสือที่ฉลาดเล่มหนึ่งและขอให้ตีนปุกอ่าน เขาเดินผ่านป่าอย่างอิ่มเอมและเปรมปรีดิ์ จากนั้นหมาป่าก็เข้ามาพบเขา กระต่ายตัดสินใจลองใช้ตรรกะสีเทาแล้วถามเขาว่า:
- Z: คุณมีการแข่งขันหรือไม่?
- ถาม: ใช่
- Z: ดังนั้นคุณไร้ความสามารถ!
ใช่ เขาเล่าเรื่องเล็ก ๆ น้อย ๆ ตามที่เขาจำได้
ตกลงตอนนี้เรามาลงที่ทฤษฎี ...
ตัวเลือกที่ 1... วิธีที่ง่ายที่สุดในการใช้ VBA ถ้าคำสั่งแบบมีเงื่อนไขคือเมื่อมีการตรวจสอบเงื่อนไข และหากเป็นไปตามเงื่อนไข นิพจน์หนึ่งจะถูกดำเนินการ:
ถ้าเงื่อนไขแล้วนิพจน์
ตัวเลือก 2... สถานการณ์อาจเกิดขึ้นเมื่อหลังจากตรวจสอบเงื่อนไขแล้ว ต้องมีการดำเนินการหลายนิพจน์ ซึ่งในกรณีนี้คำสั่ง if จะอยู่ในรูปแบบ:
ถ้าเงื่อนไขแล้ว
นิพจน์ 1
นิพจน์2
นิพจน์ N
อย่างที่คุณเห็น ในกรณีนี้ การปิด if... end ถ้า block ถูกใช้ มันก็มีความเกี่ยวข้องในกรณีที่คำสั่งซ้อนกัน
ตัวเลือก 3: เพื่อหลีกเลี่ยงการสร้างซ้อนกัน ตัวดำเนินการตามเงื่อนไขใช้โครงสร้างต่อไปนี้:
ถ้าเงื่อนไขแล้ว
นิพจน์ 1
นิพจน์2
ทุกอย่างง่ายมากที่นี่ ถ้าเงื่อนไขเป็นจริง นิพจน์แรกจะถูกดำเนินการ ถ้าไม่ นิพจน์ที่สอง โปรดจำไว้ว่าหลังจากตรวจสอบเงื่อนไขแล้ว ผู้ประกอบการหลายคนสามารถปฏิบัติตามได้เช่นเดียวกับในตัวแปรด้านบน
ตัวเลือก 4: การตรวจสอบหลายเงื่อนไข:
ถ้าเงื่อนไข 1 แล้ว
นิพจน์ 1
ElseIf เงื่อนไข 2 แล้ว
นิพจน์2
ElseIf เงื่อนไข 3 แล้ว
นิพจน์3
ตรรกะของงานมีดังนี้: ขั้นแรก เงื่อนไขแรกจะถูกตรวจสอบ ถ้าเป็นจริง นิพจน์แรกจะถูกดำเนินการ จากนั้นจะเกิดการเปลี่ยนไปใช้โอเปอเรเตอร์ ซึ่งตามหลัง End If หากไม่ตรงตามเงื่อนไขแรก เงื่อนไขที่สองจะถูกตรวจสอบ และอื่นๆ การใช้นิพจน์ Else ในตอนท้ายเป็นทางเลือก ตามด้วยคำสั่งที่ต้องดำเนินการหากไม่มีเงื่อนไขก่อนหน้านี้ตรงตามเงื่อนไข
ตกลง ตอนนี้ เรามาเขียนตัวอย่างง่ายๆ ของการใช้ VBA กัน ถ้าแล้วสร้าง สร้างฟอร์มในตัวแก้ไข Visual Basic for Applications และเพิ่มป้ายข้อความสามป้าย () และหนึ่งปุ่ม () ลงบนพื้นผิว ในโปรแกรมแก้ไขโค้ด ให้เขียน:
Private Sub GetSub () Dim MySumm เป็นจำนวนเต็ม Dim MyVar เป็น Byte MyVar = 0 ทำในขณะที่ MySumm<= 10000 MySumm = MySumm + 1 If MySumm = 10 Then Label1.Caption = "จำนวนถึง 10" ElseIf MySumm = 100 จากนั้น Label2.Caption = “ยอดถึง 100 แล้ว” ElseIf MySumm = 1,000 จากนั้น Label3.Caption = “ยอดถึง 1,000 แล้ว”อื่นๆ Label4.Caption = "มูลค่าถึง"& MySumm End ถ้า Loop End Sub Private Sub CommandButton1_Click () โทร GetSub End Sub Private Sub UserForm_Initialize () Label1.Caption = "" Label1.FontSize = 13 Label1.ForeColor = vbRed Label2.Caption = "" Label2.FontSize = 13 Label2 ForeColor = vbGreen Label3.Caption = "" Label3.FontSize = 13 Label3.ForeColor = vbBlue Label4.Caption = "" Label4.FontSize = 13 CommandButton1.Caption = "ดำเนินการ" End Sub |
ในขั้นตอน GetSub จะใช้การวนซ้ำ เงื่อนไขสำหรับการดำเนินการวนซ้ำคือค่าของตัวแปร MySumm ต้องน้อยกว่าหรือเท่ากับ 10000 ในเนื้อความของลูปเอง VBA ถ้าเช่นนั้นคำสั่งที่มีหลายตัวเลือกคือ ใช้แล้ว. มีการตรวจสอบเงื่อนไข: หากผลรวมถึงค่า 10 ให้เขียนข้อมูลหนึ่งลงในช่องข้อความแรก ถ้า 100 - ข้อมูลอื่น ถ้า 1000 - ข้อมูลที่สาม มิฉะนั้น - เขียนข้อมูลลงในคุณสมบัติคำบรรยายของข้อความที่สี่ สนาม.