Excel 2010 i VBA - jak określić liczbę zajętych wierszy i kolumn

Chciałem omówić małą ale przydatną rzecz, która mi ostatnio bardzo pomogła w pracy a mianowicie określenie za pomocą komend VBA ilości użytych wierszy i kolumn w pliku. Jest to o tyle ułatwieniem że na tej podstawie mogę zadać granicę dla pętli for (lub innej) w celu dalszej analizy danych.

Aby sprawdzić jak to działa warto otworzyć jakiś plik z danymi lub samemu je przygotować :)

dane do sprawdzenia działania

Warto zwrócić uwagę przy otwieraniu pliku Excela 2010 z makrami (jeżeli mamy już plik z napisanymi makrami) że trzeba niestety kliknąć przycisk “Enable content” (zezwalaj na treść) bez tego nasze makra nie będą działać.

makro_finalrowand-finalcol-1a.png

Druga sprawa, od której należało może zacząć to ta że plik excela 2010 “utrudni” nam bezmyślne zapisanie go jako zwykłego pliku excela i zasugeruje by zapisać go w postaci pliku z zezwoleniem dla makr

macro_save-as-2.png

i ten właśnie plik będzie wymagał wciśnięcia przycisku enable content aby je uruchamiać. oznaczony jest on specjalną ikoną

ikonka

Teraz do rzeczy
1 mamy już dane
2 Po otwarciu pliku Excela naciskamy Lewy Alt +F11 i otwiera nam się okno VBA (Visual Basic for Applications) i zaznaczamy klikając dwukrotnie arkusz z naszymi danymi (w moim przypadku Arkusz1)

makro_finalrowand-finalcol-2.png

3. Wpisujemy kod jak niżej


Sub granice()

ostatniwiersz = ActiveSheet.UsedRange.Rows.Count
ostatniakolumna = ActiveSheet.UsedRange.Columns.Count
MsgBox “W arkuszu jest ” & ostatniwiersz & ” wierszy”
MsgBox “W arkuszu jest ” & ostatniakolumna & ” kolumn”
End Sub

Funkcje Msgbox służą mi jedynie do upewnienia się że wszystko jest ok i po ich użyciu mogę na przedzie każdej takiej lini dodać pojedynczy apostrof aby interpretator VB widział te linie jako komentarz i nic z nimi nie robił.

4. Uruchamiamy makro używając F5 lub menu

runmacro.png

Możemy widzieć jeszcze coś takiego

runmacro2.png

5. Klikamy przycisk Run i oglądamy wyniki :)

macro_result1.png

macro_result2.png

Można przeprowadzić małe doświadczenie i wyciąć dane u góry lub w środku. Wówczas makro przeliczy wiersze od nowa pomijając te puste. Oczywiście zakłóci to nieco początkowe podejście o którym pisałem bo nie da się już wykorzystać do policzenia wartości bezwzględnej wierszy ale być może to też będzie komuś przydatne.

To na razie tyle. Makro można zmodyfikować do swoich potrzeb. Dodam jeszcze że testowałem je w wersjach Excel 2000 i Excel 2003 a skoro w niezmienionej formie treść makra działa również w tej wersji (2010) to śmiało można powiedzieć że nie powinno być przeszkód aby działało również w wersji 2007

onlyregistered1.png

Przydała Ci się ta informacja? Subskrybuj mój kanał RSS, by być na bieżąco z nowymi wiadomościami.