Smyčka VBA pro procházení řádků tabulky v aplikaci Excel (11 metod)

  • Sdílet Toto
Hugh West

Pokud máme v sešitě aplikace Excel velký soubor dat, je někdy výhodné, když můžeme procházet řádky ve smyčce a získat konkrétní výsledky, které chceme získat. Implementace VBA je nejefektivnější, nejrychlejší a nejbezpečnější metodou pro spuštění jakékoli operace v aplikaci Excel. V tomto článku vám ukážeme 11 různých metod, jak spustit jakoukoli operaci v aplikaci Excel. procházet řádky tabulky ve smyčce v aplikaci Excel pomocí Makro VBA .

Stáhnout pracovní sešit

Bezplatný cvičný sešit aplikace Excel si můžete stáhnout zde.

Smyčka v řádcích tabulky pomocí VBA.xlsm

11 metod procházení řádků tabulky v Excelu pomocí VBA

V této části se dozvíte, jak procházet řádky tabulky ve smyčce s 11 různými metodami, jako je procházení řádků až do prázdné buňky, procházení řádků až do nalezení určité hodnoty, procházení řádků a obarvení určité buňky atd. s. VBA makro v aplikaci Excel.

Výše je uveden příklad datové sady, podle kterého bude tento článek popisovat metody.

1. Vložení VBA pro procházení každé buňky v každém řádku tabulky podle referenčního čísla buňky

Pokud chcete projít ve smyčce každou buňku v každém řádku tabulky. v pracovním listu Excelu a získáte referenční číslo buňky jako návratová hodnota , pak postupujte podle níže uvedených kroků.

Kroky:

  • Na začátku stiskněte Alt + F11 na klávesnici nebo přejděte na kartu Vývojář -> Visual Basic otevřít Editor jazyka Visual Basic .

  • Poté ve vyskakovacím okně kódu klikněte na panelu nabídek na možnost Insert -> Modul .

  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub LoopThroughRowsByRef() LastRow = Range("B" & Rows.Count).End(xlUp).Row FirstRow = 4 i = FirstRow FirstColumn = 2 Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column Count = FirstColumn Do Until Count> LastColumn MsgBox "Currently iterating cell " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop End Sub 

Váš kód je nyní připraven ke spuštění.

  • Nyní stiskněte F5 na klávesnici nebo na panelu nabídek vyberte možnost Run -> Run Sub/UserForm . Můžete také kliknout na malá ikona Play na panelu podnabídek spustíte makro.

  • Nebo můžete vizuálně sledovat a porovnávat soubor dat a výsledek. uložit kód a vrátit se na pracovní list zájmu.
  • Tam můžete kliknout na Makra z Vývojář tab, vyberte název makra, a pak klikněte na Spustit .

Po úspěšném provedení kódu se podívejte na výše uvedený gif a uvidíte výsledek. Objeví se vyskakovací okno MsgBox ukazuje vám referenční číslo každé buňky z každého řádku z tabulky v listu Excelu.

Vysvětlení kódu VBA

 LastRow = Range("B" & Rows.Count).End(xlUp).Row 

Zjištění čísla posledního řádku v tabulce vyhledáním ve sloupci B.

 FirstRow = 4 

Nastavte řádek číslo 4, odkud začínají naše data.

 i = FirstRow 

Smyčka od prvního řádku.

 FirstColumn = 2 

Nastavte sloupec číslo 2, odkud začínají naše data.

 Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column 

Začněte procházet řádky a získejte číslo posledního sloupce vyhodnocením aktuálního řádku až do posledního řádku.

 Count = FirstColumn Do Until Count> LastColumn 

Inkrementace smyčkou sloupce od prvního řádku až po poslední řádek.

 MsgBox "Aktuálně iteruje buňka " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop 

Tato část kódu pracuje na zpracování, inkrementaci po každé iteraci a zobrazení výsledku kódu.

Přečtěte si více: Jak automaticky přidat nový řádek do tabulky aplikace Excel

2. Implementace VBA pro procházení každé buňky v každém řádku podle hodnoty

Pokud chcete projít ve smyčce každou buňku v každém řádku tabulky a jako návratovou hodnotu vyhodit hodnotu, která se v buňkách nachází. , pak vám tato část pomůže zjistit, jak to udělat pomocí VBA Excel.

To můžete provést pomocí ListObject a s DataBodyRange vlastnost VBA . Ukážeme vám kód makra s objektem i vlastností.

2.1. S objektem ListObject

Kroky k projít každou buňku v každém řádku tabulky podle hodnoty buňky pomocí objektu ListObject na adrese VBA Excel jsou uvedeny níže.

Kroky:

  • Stejný způsob jako dříve, otevřít Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Poté v okně kódu, kopírovat následující kód a vložit to.
 Sub LoopThroughRowsByList() Dim iListRow As ListRow Dim iCol As Range For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow End Sub 

Váš kód je nyní připraven ke spuštění.

  • Poté, Spustit makro, jak jsme si ukázali v předchozí části. Výsledek je zobrazen na obrázku níže.

K dispozici bude pop-up MsgBox ukazuje vám hodnota nesená každou buňkou z každého řádku z tabulky v listu Excelu.

Vysvětlení kódu VBA

 Dim iListRow As ListRow Dim iCol As Range 

Definujte proměnné.

 For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow 

Tato část kódu nejprve začne procházet řádky tabulky (" TblStudents " je název naší tabulky). Poté zadá sloupce pro každý řádek. Poté předá hodnotu buňky v MsgBox. Pak přejde na další sloupec. Po dokončení iterace všech sloupců jednoho řádku přejde na další řádek a pokračuje v iteračním procesu až do posledního řádku.

2.2. Pomocí vlastnosti DataBodyRange

Chcete-li být konkrétnější při práci s daty získanými z tabulky, můžete použít příkaz DataBodyRange vlastnost ListObject . DataBodyRange vám vyhodí výsledek obsahující rozsah ze seznamu mezi řádkem záhlaví a řádkem vložení.

Postup, jak můžete projít každou buňku v každém řádku tabulky podle hodnoty buňky pomocí DataBodyRange na adrese VBA Excel jsou uvedeny níže.

Kroky:

  • Jak bylo ukázáno dříve, otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub 

Váš kód je nyní připraven ke spuštění.

  • Později, Spustit makro a podívejte se na následující gif, abyste viděli výstup.

K dispozici bude pop-up MsgBox ukazuje vám hodnota nesená každou buňkou z každého řádku z tabulky v listu Excelu.

Vysvětlení kódu VBA

 Dim iRange As Range 

Definujte proměnnou.

 For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange 

Tato část kódu nejprve začne procházet řádky tabulky (" TblStdnt " je název naší tabulky) a vrátí rozsah hodnot vyjma řádku záhlaví tabulky. Poté předá hodnotu rozsahu v MsgBox. Pak přejde na další řádek, aby vyjmul rozsah a pokračuje v iteračním procesu až do posledního řádku.

3. Použití makra VBA pro iteraci přes řádky spojením sloupců v aplikaci Excel

V této části se dozvíte, jak procházet řádky tabulky spojením sloupců s prvním sloupcem. ze souboru dat v aplikaci Excel.

Například pro náš soubor dat nejprve iterujeme přes John v buňce B5 a 101 v buňce C5 jejich spojením a následným iterováním přes John v buňce B5 a 89 v buňce D5 jejich spojením z řádek 5 .

Ukážeme vám, jak to můžete udělat pomocí VBA makro v aplikaci Excel.

Kroky:

  • Nejprve otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Za druhé, v okně kódu, kopírovat následující kód a vložit to.
 Sub LoopThroughRowsByConcatenatingCol() Dim iRange As Range Dim iValue As String With ActiveSheet.ListObjects("TblConcatenate") For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With End Sub 

Váš kód je nyní připraven ke spuštění.

  • Za třetí, Spustit Podívejte se na níže uvedený gif, abyste viděli výsledek.

K dispozici bude pop-up MsgBox ukazuje vám spojená hodnota buněk z prvního a druhého sloupce. ( John v buňce B5 ze sloupce B a 101 v buňce C5 ze sloupce C ) a pak spojená hodnota buněk z prvního a třetího sloupce. ( John v buňce B5 ze sloupce B a 89 v buňce D5 ze sloupce D ) z řádek číslo 5 z vašeho souboru dat. A tato operace spojování bude pokračovat, dokud nedosáhne posledního řádku tabulky.

Vysvětlení kódu VBA

 Dim iRange As Range Dim iValue As String 

Definujte proměnnou.

 S ActiveSheet.ListObjects("TblConcatenate") 

Pak kód vybere tabulku z aktivního listu (" TblConcatenate " v názvu naší tabulky).

 For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value 

Poté začne iterovat každý řádek s výjimkou záhlaví sloupce. Pokud iterace najde shodu v rozsahu mezi záhlavím sloupce a řádky, uloží hodnotu do pole. iValue variabilní.

 Jinak MsgBox "Vyhodnocuje se " & iValue & ": " & iRange.Value End If Next iRange End With 

Pokud se výše uvedená podmínka nesplní, pak kód vyhodí hodnotu do MsgBoxu a ukončí plnění podmínky. Poté přejde do smyčky v dalším rozsahu a pokračuje v iteraci až do koncového řádku. Jakmile dosáhne koncového řádku, makro ukončí provádění kódu.

4. Vložení makra pro iteraci přes řádky spojením všech sloupců v tabulce v aplikaci Excel

V této části se dozvíme, jak spojit všechny sloupce, které obsahuje každý řádek. v souboru dat s VBA makro v aplikaci Excel.

Níže jsou uvedeny kroky k provedení tohoto úkonu.

Kroky:

  • Za prvé, otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub LoopThroughRowsByConcatenatingAllCol() Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol") Set iObj = iSheet.ListObjects("TblConcatenateAll") For Each iRow In iObj.ListRows For Each iCol In iObj.ListColumns iResult = iResult & " " &Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow End Sub 

Váš kód je nyní připraven ke spuštění.

  • Další, Spustit kód makra.

Jak můžete vidět na výše uvedeném gifu, je zde vyskakovací okno. MsgBox ukazuje vám spojená hodnota všech sloupců v každém řádku. z tabulky pracovního listu aplikace Excel.

Vysvětlení kódu VBA

 Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String 

Definujte proměnné.

 Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol") 

Nastavte název listu, se kterým budeme pracovat (" ConcatenatingAllCol " je název listu v sešitě).

 Set iObj = iSheet.ListObjects("TblConcatenateAll") 

Definujte název tabulky, se kterou budeme pracovat (" TblConcatenateAll " je název tabulky v našem souboru dat).

 For Each iRow In iObj.ListRows 

Spustí iteraci každého řádku tabulky.

 For Each iCol In iObj.ListColumns 

Spustí iteraci každého sloupce každého řádku tabulky.

 iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow 

Výsledek uloží tak, že protne hodnoty, které nesou jednotlivé sloupce každého řádku. Po prohledání všech sloupců nacházejících se v každém řádku předá výsledek v MsgBoxu. Poté opět zahájí cyklus v dalším řádku a pokračuje ve smyčce, dokud nedosáhne posledního řádku tabulky.

Přečtěte si více: Jak seřadit více sloupců tabulky pomocí aplikace Excel VBA (2 metody)

5. Zastavení iterace, pokud je nalezena hodnota při procházení řádků tabulky ve smyčce pomocí makra VBA

Předpokládejme, že chcete procházet řádky tabulky a zastavit smyčku, když najde určitou hodnotu. . Můžete to udělat pomocí jednoduchého makrokódu.

Naučme se, jak to udělat VBA v aplikaci Excel.

Kroky:

  • Nejprve otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Poté v okně kódu, kopírovat následující kód a vložit to.
 Sub LoopThroughRowsForValue() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData End Sub 

Váš kód je nyní připraven ke spuštění.

  • Později, Spustit makro.
  • Bude spustí smyčku a zastaví ji, když najde konkrétní hodnotu. (" Hrana ") v rozsahu a vyhodí výsledkem je MsgBox .

Jak vidíte na obrázku výše, zobrazí se vyskakovací okno MsgBox, ve kterém se zobrazí informace o tom. adresa buňky, $B$10 , kde jsme našli zadanou hodnotu, " Hrana " .

Vysvětlení kódu VBA

 Dim iData As Range 

Definujte proměnnou.

 For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData 

Tato část kódu slouží k procházení řádků od 1 do 15. Pokud najde konkrétní slovo " Hrana ", pak předá výsledek s adresou buňky, v níž je slovo uloženo. Takto pokračuje, dokud při hledání slova nedokončí prohledávání všech dat z řádků 1 až 15.

Další informace: Jak vložit nebo odstranit řádky a sloupce z tabulky aplikace Excel

6. Smyčka VBA pro procházení každého řádku a obarvení určité hodnoty v aplikaci Excel

Co když nechcete vyhodit adresu buňky se zadanou hodnotou v MsgBoxu? Možná budete chtít. obarví buňku, která nese hodnotu které hledáte.

Naučme se, jak to udělat s VBA makro.

Kroky:

  • Stejný způsob jako dříve, otevřít Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub LoopThroughRowsAndColor() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData End Sub 

Váš kód je nyní připraven ke spuštění.

  • Poté, Spustit makro.
  • Bude spustí smyčku a zastaví ji, jakmile najde konkrétní hodnotu (" Hrana ") v rozsahu a obarvit buňku s ColourIndex které jste uvedli v kódu.

Jak vidíte na obrázku výše, C ell B10 , kde jsme našli zadanou hodnotu, " Hrana " je barevná po provedení kódu.

Vysvětlení kódu VBA

 Dim iData As Range 

Definujte proměnnou.

 For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData 

Tato část kódu slouží k procházení řádků od 1 do 15. Pokud najde konkrétní slovo " Hrana ", pak vybarví buňku, ve které se nachází dané slovo. Takto pokračuje, dokud při hledání slova nedokončí prohledávání všech dat z řádků 1 až 15.

Přečtěte si více: Jak používat pole tabulky VLOOKUP na základě hodnoty buňky v aplikaci Excel

Podobná čtení

  • Existuje v Excelu funkce TABLE?
  • Jak převést tabulku na seznam v aplikaci Excel (3 rychlé způsoby)
  • Převod rozsahu na tabulku v aplikaci Excel (5 snadných metod)
  • Efektivní použití vzorce v tabulce aplikace Excel (se 4 příklady)
  • Název tabulky aplikace Excel: vše, co potřebujete vědět

7. Implementace VBA pro procházení každého řádku a obarvení každého lichého řádku v aplikaci Excel

V předchozí části jsme se dozvěděli, jak vybarvit buňku, která nese určitou hodnotu. V této části se naučíme, jak projít ve smyčce každý řádek tabulky a vybarvit každý lichý řádek. s VBA makro v aplikaci Excel.

Kroky k provedení procesu jsou popsány níže.

Kroky:

  • Jak bylo ukázáno dříve, otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub LoopThroughRowsAndColorOddRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With End Sub 

Váš kód je nyní připraven ke spuštění.

  • Nyní, Spustit makro a podívejte se na následující obrázek, abyste viděli výstup.

Všechny liché řádky jsou barevné. po projití všech řádků v tabulce pracovního listu.

Vysvětlení kódu VBA

 Dim iRow As Long 

Definujte proměnnou.

 S Range("B4").CurrentRegion 

Definujte rozsah, se kterým budeme pracovat.

 For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With 

Tato část kódu se týká iterace přes všechny řádky, počínaje dalším řádkem aktuálního řádku, B4 . Pokud se mod dělení čísel řádků dvěma rovná vrácenému číslu řádku uloženému v celočíselném typu, pak tento kód obarví všechny řádky, které jsou výpočtem získány, pomocí barevného indexu zadaného v kódu. Postupuje přes všechny řádky, dokud nedosáhne konce rozsahu.

8. Implementace VBA pro procházení řádků a obarvení každého sudého řádku v aplikaci Excel

V předchozí části jsme se naučili, jak vybarvit každý lichý řádek tabulky. V této části se naučíme, jak projít ve smyčce každý řádek tabulky a vybarvit každý sudý řádek. pomocí makra VBA v aplikaci Excel.

Kroky k provedení procesu jsou popsány níže.

Kroky:

  • Za prvé, otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub LoopThroughRowsAndColorEvenRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With End Sub 

Váš kód je nyní připraven ke spuštění.

  • Další, Spustit makro a podívejte se na následující obrázek, abyste viděli výsledek.

Všechny sudé řádky jsou barevné. po projití všech řádků v tabulce pracovního listu.

Vysvětlení kódu VBA

 Dim iRow As Long 

Definujte proměnnou.

 S Range("B4").CurrentRegion 

Definujte rozsah, se kterým budeme pracovat.

 Pro iRow = 3 To .Rows.Count Krok 2 .Rows(iRow).Interior.ColorIndex = 8 Další End With 

Tato část kódu začne iterovat po třech řádcích od aktuálního řádku, B4 . Nejprve jej obarví, pak zvýší počet řádků o 2 a pokračuje v obarvování, dokud nedosáhne posledního řádku datové sady.

9. Použití makra pro iteraci přes řádky až do prázdné buňky v aplikaci Excel

Pokud chcete, aby váš kód fungoval tak, jak bude. projít ve smyčce všechny řádky tabulky a zastavit se, když se dostane na prázdnou buňku. , pak je tato část určena právě vám. Tuto úlohu můžete provést jak pomocí příkazu Smyčka FOR a Smyčka Do-Until v aplikaci Excel VBA .

9.1. Se smyčkou FOR

Kroky k procházet řádky tabulky až do prázdné buňky pomocí smyčky FOR. na adrese VBA Excel jsou uvedeny níže.

Kroky:

  • Nejprve otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Poté, kopírovat následující kód a vložit do okna kódu.
 Sub ForLoopThroughRowsUntilBlank() Dim x As Integer Application.ScreenUpdating = False NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count Range("B4").Select For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next Application.ScreenUpdating = True End Sub 

Váš kód je nyní připraven ke spuštění.

  • Pak, Spustit makro a výsledek je zobrazen na obrázku níže.

Po spuštění makra začal procházet všechny řádky ve smyčce v tabulce, a jakmile dosáhne prázdná buňka, buňka B8 , to zastavil iteraci .

Vysvětlení kódu VBA

 Dim x As Integer 

Definujte proměnnou.

 Application.ScreenUpdating = False 

Vypnutí události aktualizace obrazovky.

 NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count 

Uložit všechny řádky počínaje Buňka B4 až do posledního.

 Range("B4").Select 

Vyberte Buňka B4 .

 For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next 

Tato část kódu začne procházet všechny řádky ve smyčce. Když najde prázdnou buňku v řádku, vybere ji a pokračuje v procházení řádků, dokud nedojde na konec.

 Application.ScreenUpdating = True 

Zapnutí události aktualizace obrazovky.

9.2. Se smyčkou Do-Until

Kroky k procházet řádky až do prázdné buňky pomocí smyčky Do-Until na adrese VBA jsou uvedeny níže.

Kroky:

  • Za prvé, otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub 

Váš kód je nyní připraven ke spuštění.

  • Později, Spustit Výsledek je zobrazen na následujícím obrázku.

Po spuštění makra se spustilo procházení všech řádků ve smyčce v tabulce, a jakmile dosáhne prázdná buňka, buňka B8 , to zastavil iteraci .

Vysvětlení kódu VBA

 Range("B4").Select 

Vyberte buňku, ve které budeme pracovat.

 Do dokud není IsEmpty(ActiveCell) 

Spustí a pokračuje ve smyčce, dokud nenajde prázdnou buňku.

 ActiveCell.Offset(1, 0).Select Loop 

Pokud je v řádku nalezena prázdná buňka, vyberte ji a zastavte iteraci.

10. Makro VBA pro iteraci přes řádky až do více prázdných buněk v aplikaci Excel

V předchozí části jste se dozvěděli, jak zastavit cyklus při nalezení prázdné buňky. Co když ale nechcete zastavit iteraci, dokud se nenajde více prázdných buněk místo jedné.

Kroky k procházet řádky, dokud se neobjeví více prázdných buněk se nacházejí v tabulce s VBA Excel jsou uvedeny níže.

Kroky:

  • Za prvé, otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub 

Váš kód je nyní připraven ke spuštění.

  • Nyní, Spustit makro a podívejte se na následující gif výstupu.

Po spuštění makra se nezastavil na první prázdné buňce, buňce B8. . Zastavil se, když zjistil. dvě po sobě jdoucí prázdná políčka v buňce B16 .

Vysvětlení kódu VBA

 Range("B4").Select 

Vyberte buňku, ve které budeme pracovat.

 Do Dokud není IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) 

Spustí a pokračuje ve smyčce, dokud nenajde dvě po sobě jdoucí prázdná políčka.

 ActiveCell.Offset(2, 0).Select Loop 

Pokud jsou nalezeny dvě po sobě jdoucí prázdné buňky, vyberte je a zastavte iteraci.

11. Vložení VBA do smyčky procházení řádků spojením všech sloupců do prázdného místa v aplikaci Excel

V této části se dozvíte, jak projít ve smyčce všechny řádky tabulky a spojit všechny sloupce až do prázdné buňky. je nalezena pomocí VBA Excel.

Naučme se, jak to udělat s VBA makro v aplikaci Excel.

Kroky:

  • Nejprve otevřete Editor jazyka Visual Basic z Vývojář karta a Vložte a Modul v okně kódu.
  • Pak, kopírovat následující kód a vložit do okna kódu.
 Sub ConcatenatingAllColUntilBlank() Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String Set iSheet = Sheets("ConcatenatingAllColUntilBlank") iValue = Range("B4").CurrentRegion For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " & iValue(i, J)) Next J MsgBox iResult Next i End Sub 

Váš kód je nyní připraven ke spuštění.

  • Později, Spustit makro a výsledek si prohlédněte na následujícím gifu.

Jak můžete vidět na výše uvedeném gifu, je zde vyskakovací okno. MsgBox ukazuje vám spojená hodnota všech sloupců v každém řádku. z tabulky vašeho listu Excelu. Ale je to se zastavil, jakmile dosáhl prázdné buňky .

Vysvětlení kódu VBA

 Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String 

Definujte proměnné.

 Set iSheet = Sheets("ConcatenatingAllColUntilBlank") 

Nastavte název listu, se kterým budeme pracovat (" SpojováníAllColUntilBlank " je název listu v sešitě).

 iValue = Range("B4").CurrentRegion 

Definujte rozsah, se kterým budeme pracovat.

 For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " & iValue(i, J)) Next J MsgBox iResult Next i 

Tato část kódu začíná smyčku s polem. Pokračuje ve smyčce, dokud nevrátí největší index pole a dolní hranici prvního rozměru. Poté vstoupí do iterace extrakce dolní hranice druhého rozměru. Poté předá všechny extrahované hodnoty do pole. iResult proměnné tak, že je spojí a výsledek vyhodí do MsgBoxu. Takto postupuje, dokud nenajde prázdnou buňku.

Závěr

Na závěr vám tento článek ukázal 11 účinných metod, jak. procházet řádky tabulky ve smyčce v aplikaci Excel pomocí Makro VBA . doufám, že pro vás byl tento článek velmi přínosný. Neváhejte se zeptat na jakékoli otázky týkající se tohoto tématu.

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.