Telefonszámunk: 1-472-0679

Az első kitöltött cella megkeresése makróval

2013-11-09 - horvimi - Kategória: Kijelölések, Macro-VBA
Hivatkozott Excel verzio: Excel 2007 Excel 2010 Excel 2013

Előfordulhat, hogy egy makró projekt kapcsán szembejön az a probléma, hogy nem tudjuk előre azt, hogy hol is kezdődik a feldolgozandó tartomány, vagy az éppen mindig változó. Emiatt jól jöhet ez az egy soros snippet a probléma megoldására.

[vb]

Range("A1").Select

Cells.Find(What:="*").Activate

[/vb]

Az első sor az aktuális munkalap első celláját aktiválja, hogy onnan kezdődjön a keresés. A második pedig megkeresi az első kitöltött cellát, amiben bármilyen érték lehet, szám, vagy szöveg, akár képlet.

A fenti kód csak akkor működik, ha az aktuális munkalap nem teljesen üres. Ellenkező esetben hibát fog jelezni.

Ezért csak akkor használjuk így, ha biztosan tudjuk, hogy van kitöltött cella a vizsgált munkalapon.

Munkalap ürességének ellenőrzése

Készítünk egy függvényt, ami paraméterként a vizsgálandó munkalapot kapja meg, vissza pedig egy logikai értéket ad.

Ha egy munkalap üres, akkor a használt tartomány címe az ‘A1’ lesz. És ha az üres, akkor a munkalapot üresnek tekinthetjük.

[vb]

Function is_empty_sheet(sname As Worksheet) As Boolean

is_empty_sheet = sname.UsedRange.Address = "$A$1" And IsEmpty(sname.Range("A1"))

End Function

[/vb]

A javított kód

[vb] Function is_empty_sheet(sname As Worksheet) As Boolean

is_empty_sheet = sname.UsedRange.Address = "$A$1" And IsEmpty(sname.Range("A1"))

End Function

Sub find_first_filled()

If Not is_empty_sheet(ActiveSheet) Then

Range("A1").Select
Cells.Find(What:="*").Activate
End If

End Sub

[/vb]

Így az első kitöltött cella keresése csak akkor fut le, ha az aktuális munkalap nem üres.

A munkalap nem csak cellákat, hanem egyéb elemet is tartalmazhat, pl.: Grafikonok, rajz elemek, képek, stb..

Ezeket ez a kód nem vizsgálja

 

Mindez működés közben

  • Hol az első kitöltött cella?

Vélemény, hozzászólás?