คอมพิวเตอร์ Windows อินเทอร์เน็ต

หากคำอธิบาย 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 และตรวจสอบบรรทัดได้มากเท่าที่คุณต้องการภายในขอบเขตที่เหมาะสมแน่นอน หากมีหลายบรรทัดลูปจะช่วยได้ซึ่งเราจะทำงานในบทเรียนต่อไป

มาดูตัวอย่างกัน
ลองนึกภาพว่าเราจำเป็นต้องสร้างตรรกะสำหรับสัญญาณไฟจราจรเพื่อให้ทำงานและแสดงสีได้
ทำอย่างไร?
ไม่ยากเลย ยกตัวอย่าง

ใน Visual Basic for Application (VBA) มีหลายวิธีในการเปลี่ยนลำดับการดำเนินการของคำสั่ง โครงสร้างการควบคุม VBA นั้นคล้ายกับโครงสร้างที่คล้ายกันมากในภาษาโปรแกรมอื่นๆ

โครงสร้างการควบคุม VBA พื้นฐาน:

  • ถ้าแล้วอย่างอื่น "End If
  • สำหรับ Next
  • ในขณะที่ wend
  • ทำลูป
  • เลือกกรณี "สิ้นสุด Select
  • สำหรับแต่ละถัดไป

    ถ้าแล้วอย่างอื่น "สิ้นสุดถ้าคำสั่งควบคุม
    คำสั่งนี้เปลี่ยนลำดับการดำเนินการของคำสั่งขึ้นอยู่กับผลของการตรวจสอบเงื่อนไขที่กำหนด (หรือชุดของเงื่อนไข)

    ตัวอย่าง:

    ทดสอบย่อยถ้าแล้ว ()

    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 - ข้อมูลที่สาม มิฉะนั้น - เขียนข้อมูลลงในคุณสมบัติคำบรรยายของข้อความที่สี่ สนาม.