Makro Excel VBA, které najde poslední obsazený řádek

V následujícím kódu je příklad VBA makra, které najde poslední obsazený řádek v tabulce od zadaného řádku. Makro předpokládá, že pracujeme s aktivním listem v Excelu.

Sub NajdiPosledniRadek()
    Dim startRadek As Long
    Dim lastRadek As Long

    ' Zadejte počáteční řádek, od kterého chcete hledat
    startRadek = 2 ' Například od řádku č. 2

    ' Najděte poslední obsazený řádek
    lastRadek = Cells(Rows.Count, 1).End(xlUp).Row

    ' Pokud je poslední řádek menší než počáteční řádek, nastavte poslední řádek na počáteční řádek
    If lastRadek < startRadek Then
        lastRadek = startRadek
    End If

    ' Vypište výsledek
    MsgBox "Poslední obsazený řádek je: " & lastRadek
End Sub

V tomto příkladu je počáteční řádek nastaven na hodnotu 2. Můžete ji upravit podle svých potřeb. Makro používá funkci Cells(Rows.Count, 1).End(xlUp).Row, která najde poslední obsazenou buňku ve sloupci 1 (sloupec A) a vrátí odpovídající řádek. Poté se porovná poslední řádek s počátečním řádkem a případně se upraví tak, aby byl nejméně roven počátečnímu řádku. Nakonec se výsledek zobrazí v zprávovém okně pomocí funkce MsgBox.

Makro můžete spustit stisknutím Alt + F11 v Excelu, otevřením editoru VBA, vložením kódu do modulu a spuštěním makra.

Samozřejmě, můžete také použít funkci Cells.Find k nalezení posledního obsazeného řádku od zadaného řádku. Zde je příklad kódu:

Sub NajdiPosledniRadek()
    Dim startRadek As Long
    Dim lastRadek As Long
    Dim posledniBunka As Range

    ' Zadejte počáteční řádek, od kterého chcete hledat
    startRadek = 2 ' Například od řádku č. 2

    ' Najděte poslední obsazenou buňku od zadaného řádku
    Set posledniBunka = Cells.Find(What:="*", After:=Cells(startRadek, 1), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)

    If Not posledniBunka Is Nothing Then
        ' Získání řádku z poslední buňky
        lastRadek = posledniBunka.Row
    Else
        ' Pokud žádná obsazená buňka nebyla nalezena, nastavíme poslední řádek na počáteční řádek
        lastRadek = startRadek
    End If

    ' Vypište výsledek
    MsgBox "Poslední obsazený řádek je: " & lastRadek
End Sub

Tento kód používá funkci Cells.Find, která hledá nejbližší buňku obsahující data od zadaného řádku. Parametr What je nastaven na "*" pro vyhledání jakéhokoli obsahu. Parametr After je nastaven na buňku Cells(startRadek, 1), což je buňka na zadaném počátečním řádku a sloupci 1 (sloupec A). Funkce Find vyhledává ve vzestupném směru (SearchDirection:=xlPrevious), což znamená, že najde nejbližší buňku před zadaným počátečním řádkem. Pokud je buňka nalezena, přiřadí se její řádek do proměnné lastRadek. Pokud nebyla nalezena žádná obsazená buňka, nastaví se poslední řádek na počáteční řádek. Nakonec se výsledek zobrazí v zprávovém okně pomocí funkce MsgBox.

Také můžete tento kód vložit do modulu VBA a spustit makro stisknutím Alt + F11 v Excelu.

Samozřejmě, můžete také použít funkci Cells.Find k nalezení posledního obsazeného řádku od zadaného řádku. Zde je příklad kódu:

Sub NajdiPosledniRadek()
    Dim startRadek As Long
    Dim lastRadek As Long
    Dim posledniBunka As Range

    ' Zadejte počáteční řádek, od kterého chcete hledat
    startRadek = 2 ' Například od řádku č. 2

    ' Najděte poslední obsazenou buňku od zadaného řádku
    Set posledniBunka = Cells.Find(What:="*", After:=Cells(startRadek, 1), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)

    If Not posledniBunka Is Nothing Then
        ' Získání řádku z poslední buňky
        lastRadek = posledniBunka.Row
    Else
        ' Pokud žádná obsazená buňka nebyla nalezena, nastavíme poslední řádek na počáteční řádek
        lastRadek = startRadek
    End If

    ' Vypište výsledek
    MsgBox "Poslední obsazený řádek je: " & lastRadek
End Sub

Tento kód používá funkci Cells.Find, která hledá nejbližší buňku obsahující data od zadaného řádku. Parametr What je nastaven na "*" pro vyhledání jakéhokoli obsahu. Parametr After je nastaven na buňku Cells(startRadek, 1), což je buňka na zadaném počátečním řádku a sloupci 1 (sloupec A). Funkce Find vyhledává ve vzestupném směru (SearchDirection:=xlPrevious), což znamená, že najde nejbližší buňku před zadaným počátečním řádkem. Pokud je buňka nalezena, přiřadí se její řádek do proměnné lastRadek. Pokud nebyla nalezena žádná obsazená buňka, nastaví se poslední řádek na počáteční řádek. Nakonec se výsledek zobrazí v zprávovém okně pomocí funkce MsgBox.

Také můžete tento kód vložit do modulu VBA a spustit makro stisknutím Alt + F11 v Excelu.

Použití funkce Cells.Find má několik výhod oproti tradičnímu způsobu hledání posledního obsazeného řádku:

  1. Flexibilita: Funkce Cells.Find umožňuje pokročilé možnosti vyhledávání, jako je hledání podle vzoru (LookAt:=xlPart) nebo ignorování velikosti písmen (MatchCase:=False). Můžete upravit parametry funkce podle vašich konkrétních požadavků na vyhledávání.
  2. Efektivita: Funkce Cells.Find vyhledává data pouze od zadaného řádku a ve vzestupném směru, což umožňuje efektivní vyhledávání a snižuje časovou náročnost.
  3. Univerzálnost: Použití funkce Cells.Find vám umožňuje jednoduše upravit hledání na základě různých kritérií. Můžete vyhledávat nejen poslední obsazený řádek, ale také libovolné další podmínky, které potřebujete pro vaše konkrétní úlohy.
  4. Odolnost vůči změnám: Pokud se rozsah nebo umístění dat v tabulce změní, funkce Cells.Find bude stále fungovat správně, protože vyhledávání je založeno na skutečném obsahu buněk a ne na pevně definovaných rozsazích.

Celkově lze říci, že použití funkce Cells.Find poskytuje větší flexibilitu a efektivitu při hledání posledního obsazeného řádku v porovnání s tradičními metodami, jako je přecházení celého rozsahu nebo použití funkce End(xlUp).

Diskuze

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Přejít nahoru