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:
- 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í. - 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. - 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. - 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)
.