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 SubV 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 SubTento 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 SubTento 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:
- Flexibilita: Funkce
Cells.Findumožň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í. - Efektivita: Funkce
Cells.Findvyhledá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. - Univerzálnost: Použití funkce
Cells.Findvá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. - Odolnost vůči změnám: Pokud se rozsah nebo umístění dat v tabulce změní, funkce
Cells.Findbude 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).