Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

vba - Pierwsze makro - utknąłem

07 Paź 2015 08:31 558 3
  • Poziom 8  
    Hej

    Zacząłem właśnie uczyć się samemu VBA i utknąłem z jednym problemem.

    Moje Makro ma a zadanie przy każdym uruchomieniu wyszukać ile wierszy jest zapisanych w pliku w kolumnie D i w tylu też wierszach w kolumnie T wpisać cyfrę "1". Zrobiłem pętle która przechodzi do pierwszego pustego wiersza i zwraca jego adres i wartość dla uzyskania liczby wierszy (pole u3). Dodałem komendę autofill tylko nie wiem jak zapisać to aby ta komenda jako ostatnią wartość przyjmowała liczbę zwracana w komórce u3. Czy ktoś z was mógłby być na tyle uprzejmy i mi pomóc? Oczywiście nawet nie wiem czy ten mój kod jest coś wart no ale może uda się go jakoś skończyć lub zaproponować coś godniejszego.. Dziękuję!

    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 27  
    Skoro się dopiero uczysz VBA to zacznij od dobrych praktyk, a jest nią deklarowanie zmiennych. Poczytaj o deklarowaniu zmiennych i ich typach.

    Staraj się nie używać Selectów, zamiast (tu jest także odpowiedź na Twoje pytanie):
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Możesz napisać:
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Ostatni zapisany wiersz najprościej uzyskać poprzez konstrukcję (przykład dla kolumny D):
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Jest to znacznie wydajniejsze od pętli po wszystkich komórkach danego wiersza.

    Tak właściwie to makro wykonujące te operacje można zapisać w następujący sposób:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Moderator Programowanie
    Argument jest typu string, więc możesz go poskładać z tego co masz, Np
    Range("T2:" & nrkom)

    Po mojemu tworzysz nowy utwór pt "o Jeden Wiersz Za Daleko" ;)
    a skoro trenujesz pętlę, to niech w niej dzieje się więcej, a mniej za pętlą. Tu Twoja pętla z wkładką.
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    A tak nawiasem mówiąc: do tego zadania w ogóle nie potrzeba pętli i ani jednego select'a. Nagraj sobie Np makro Ctrl+strzałka w dół...

    Edit: :arrow: cbrman to nie może być przypadek! Podsłuchujesz mój budzik :D
  • Poziom 8  
    Hej dziękuję za pomoc! :)

    Spróbuję każdą z podanych przez was opcji! Zresztą coś podejrzewałem że pewno da się to zrobić w 3-4 linijkach no ale to jeszcze nie poziom jak na 3 dzień nauki :)


    Próbowałem nagrać to makro tak jak mówiłeś Adamas jednak przy zmianie liczby wierszy pomimo użycia ctrl+strzałka przy nagraniu rozciągało "1" na złą ilość wierszy..coś musiałem zepsuć..

    ćwiczę wiec zmienne, Dzięki miłego dnia!