XL: Ako používať cyklické štruktúr v jazyku Visual Basic for Applications

ID článku: 141762 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Keď vytvoríte makrách alebo aplikáciách v programe Microsoft Visual Basic pre Aplikácie, je často potrebné spustiť cez oddiel kódu niekoľkokrát. Visual Basic for Applications poskytuje niekoľko metód s ktorými chcete opakovať alebo "slučky" cez oddiel kódexu.

Tento článok poskytuje vzorky kód, ktorý ilustruje použitie rôznych štruktúry a algoritmy cyklické jazyka Visual Basic for Applications poskytuje.

DALSIE INFORMACIE

Spoločnosť Microsoft poskytuje príklady programovacieho kódu len ako názornú ukážku bez ľubovoľnej vyjadrenej alebo implicitnej záruky. Toto zahŕňa, okrem iného, implicitné záruky obchodovateľnosti a vhodnosti pre konkrétny účel. Úroveň odbornosti článku predpokladá, že ovládate predvádzaný programovací jazyk a nástroje, ktoré sa používajú na vytváranie a ladenie procedúr. Pracovníci technickej podpory spoločnosti Microsoft môžu pomôcť vysvetliť funkčnosť konkrétny postup, ale nie modifikuje tieto príklady poskytovať pridanú funkčnosť alebo výstavbe postupy splniť vaše konkrétne požiadavky. Keď sa rozhodne, ktoré looping štruktúra používať, existuje niekoľko úvahy, byť vedomí. Napríklad:
Viem presne koľkokrát chcem slučky pomocou kódu?

Ak áno, koľko?

Ak nie, existuje špecifickú podmienku kedy chcem makra Ukončite slučky? Ak podmienená loop chcete otestovať podmienka pred alebo po kód sa vykonáva?

Vzorky Visual Basic postupy

Nasledovné príklady demonštrujú rôznych looping štruktúr k dispozícii v jazyku Visual Basic for Applications. Pokiaľ nie je uvedené inak, Príklady predpokladajú bunku alebo rozsah buniek je začiarknuté. Niekoľko ďalších veci na vedomie:
  • V rámci každej príklad správy rámček () funkciaMsgBox) sa používa na zobrazenie informácií. V týchto príkladoch kdekoľvek MsgBox Funkcia vyskytne, je, kde by ste mali zadať kód opakovať cez každú iteráciu slučky.
  • Niektoré z pripomienok v kóde opísať alternatívne metódy pre uskutočňovaní určitej úlohy alebo pre robí rôzne úlohy s podobné kód.
  • Symbol tilda (~) použité v rámci niektoré z pripomienok by nahradiť názov uvedený objektu [objekt v úvodzovkách, napríklad worksheets("sheet1")] alebo objektu indexové číslo.

Pre...Každý...Next

Tento príklad používa Pre...Každý...Next vyhlásenie do slučky cez všetky bunky vybratého rozsahu (komentáre ukázať alternatívna metóda):
   ' To show the contents of each cell in a selection or specific range.
   Sub for_each_demo()

      ' Or, use "In Worksheet(~).Range(~)" to specify a specific range.
      For Each cell In Selection

         ' Displays cell contents in message box.
         MsgBox cell.Value

         ' Reset cell to next object.
      Next
   End Sub
				

For <variable> = <n1> to <n2></n2></n1></variable>

' This example loops through the code a specified number of times.
   Sub for_demo()

      ' Sets x to 1, adds 1 to x until x = 5, loops 5 times.
      For x = 1 To 5 Step 1

         ' Displays value of x in msgbox.
         MsgBox x

         ' Returns to top of loop 4 times.
      Next
   End Sub
				

Robiť...Kým s testom na začiatku slučky

Tento príklad používa Urobiť...Kým slučky "chodiť" v stĺpci buniek sa nedosiahne prvú prázdnu bunku. Pretože makro vykoná test na začiatku slučky, ak je prvá bunka prázdna, kód vo vnútri sa nespustia slučky.
   ' Performs Do loop, testing at top of loop.
   ' Loops until empty cell is reached.
   ' Note that you can also use a Do While Not IsEmpty(ActiveCell) loop.

   Sub test_before_do_loop()

      ' Test contents of active cell; if active cell is empty, exit loop.
      Do Until IsEmpty(ActiveCell)

         ' Displays cell contents in message box.
         MsgBox ActiveCell.Value

         ' Step down 1 row to the next cell.
         ActiveCell.Offset(1, 0).Select

        ' Return to top of loop.
      Loop
   End Sub
				

Robiť...Kým s testom na konci slučky

Tento príklad používa tiež Urobiť slučky, ale testy v spodnej časti slučky. Prvý riadok makro testy prvú bunku. Bez prvý riadok kódu na testovanie počiatočnú bunku, kód spustiť na aspoň jeden čas, pretože loop testy na dne.
   ' Performs Do loop, testing at bottom of loop.

   Sub test_after_do_loop()

      ' Test to see if first cell is empty.
      If IsEmpty(ActiveCell) Then Exit Sub

         ' Begin loop.
         Do

            ' Displays cell contents in message box.
            MsgBox ActiveCell.Value

            ' Steps down one row to the next cell.
            ActiveCell.Offset(1, 0).Select

            ' Test contents of active cell; if empty, exit loop
            ' or Loop While Not IsEmpty(ActiveCell).

         Loop Until IsEmpty(ActiveCell)
      End Sub
				
UPOZORNENIE: Nie pobočky do útvaru Zatiaľ čo...WEND slučky bez spustenia Zatiaľ čo vyhlásenie. Pritom môže spôsobiť chyby alebo iné problémy, ktoré sú ťažké nájsť.

V Urobiť...Slučka výkaz poskytuje štruktúrovanejšie a pružným spôsobom na vykonávanie cyklické. V Zatiaľ čo...WEND slučky je zahrnutý v programe Visual Basic pre aplikácie pre spätnú kompatibilitu.

Zatiaľ čo...WEND slučky

POZNÁMKA: Zatiaľ čo...WEND slučky je zahrnutý v programe Visual Basic pre aplikácie pre spätnú kompatibilitu.

Tento príklad používa Zatiaľ čo...WEND slučky. Tento slučky testy v hornej časti slučke iba.
    ' Performs While loop, testing at top of the loop.
   Sub While_loop_demo()

      ' Sets condition of loop, while active cell is not empty.
      While Not IsEmpty(ActiveCell)

         ' Displays cell contents in message box.
         MsgBox ActiveCell.Value

         ' Step down one row to the next cell.
         ActiveCell.Offset(1, 0).Select

      ' End While loop.
      Wend
   End Sub
				

Ak...Potom...GoTo slučky

Tento príklad vytvára slučky pomocou"Ak <condition>potom GoTo <line label=""></line> </condition>"štruktúra. Táto štruktúra sa testuje v spodnej časti slučky.
     Sub loop_using_goto()

      ' Test to see if first cell is empty.
      If IsEmpty(ActiveCell) Then Exit Sub

      ' Line label indicating top of loop.
   top:

      ' Displays cell contents in message box.
      MsgBox ActiveCell.Value

      ' Step down one row to the next cell.
      ActiveCell.Offset(1, 0).Select

      ' Test to see if new cell is empty.
      If Not IsEmpty(ActiveCell) Then GoTo top

   End Sub
				

ODKAZY

Ďalšie informácie o looping štruktúry, v editore jazyka Visual Basic, kliknite na Asistenta programu Office, zadajte slučky, a potom kliknite na tlačidlo Vyhľadávanie zobrazte príslušné témy.

Ďalšie informácie o získanie Pomocníka pre Visual Basic forApplications, po kliknutí na nasledovné čísla článkov databázy Microsoft Knowledge Base:
305326 OFFXP: Programovanie zdroje pre Visual Basic for Applications
226118 OFF2000: Programovanie zdroje pre Visual Basic for Applications
163435 VBA: Programovanie zdroje pre Visual Basic for Applications
Microsoft Excel Visual Basic Užívateľská príručka, verzia 5.0, stránky 143-151
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Vlastnosti

ID článku: 141762 - Posledná kontrola: 17. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 98 for Macintosh
  • Microsoft Excel 5.0 for Macintosh
Kľúčové slová: 
kbcode kbhowto kbprogramming kbmt KB141762 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:141762

Odošlite odozvu