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

Modyfikacja kodu pętla for each

kodzku 13 Wrz 2011 08:38 1127 8
  • #1 13 Wrz 2011 08:38
    kodzku
    Poziom 8  

    Witam.
    Mam napisany kod, w którym jest pętla działająca w danym zakresie.
    Jednakże zakres często się zmienia i raz jest 30 wierszy a raz 500.
    Proszę o pomoc jak uwzględnić w moim kodzie pętlę, która działała by tylko do ostatniego rekordu (myślę, że chodzi to o pętle for each lecz nie wiem dokładnie jak ją zastosować)

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Proszę pamiętać o używaniu znaczników syntax. Opcja Listing kodu. - arnoldziq

    0 8
  • #2 13 Wrz 2011 08:59
    marcinj12
    Poziom 40  

    Jeżeli wiesz że wierszy będzie mniej niż 65536 (kompatybilne z Excelem 2003), to wstaw przed pętlą fragment:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    gdzie A65536 - ustala ostatni wiersz w kolumnie A.
    Potem w pętli użyj For i = 1 To ost_wiersz ...

    0
  • #3 13 Wrz 2011 09:25
    kodzku
    Poziom 8  

    rozumiem, że ost_wiersz to zmienna range?
    Czy możesz bardziej rozwinąć
    Potem w pętli użyj For i = 1 To ost_wiersz ...
    nie bardzo łapię(nie wiem jak to zastosować u mnie)

    0
  • #4 13 Wrz 2011 09:33
    marcinj12
    Poziom 40  

    Po wstawieniu tego przed pętlę w zmiennej ost_wiersz będziesz miał numer ostatniego niepustego wiersza w wybranej kolumnie.
    Masz w kodzie dwie pętle, a nie napisałeś w której z nich "zakres często się zmienia i raz jest 30 wierszy a raz 500", stąd nie wiem co rozwijać.
    Generalnie:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #5 13 Wrz 2011 09:46
    kodzku
    Poziom 8  

    faktycznie moje niedopatrzenie:D, chodzi mi o pierwszą pętle. Ale czy można to też zastosować również dla drugiej pętli. (chodzi o to że są to dwie listy(za każdym razem inne) które po spełnieniu warunku uzupełniają dane.

    0
  • #6 13 Wrz 2011 09:59
    marcinj12
    Poziom 40  

    Można, czemu nie?
    Dodaj drugą zmienną, ost_wiersz2 czy coś w tym stylu, podaj nazwę tego drugiego arkusza w którym ma szukać wiersza, a w drugiej pętli For użyj - analogicznie - zmiennej ost_wiersz2 zamiast ost_wiersz.

    PS. Jeżeli masz przypisane arkusze do zmiennych ENERGADR i RBH, to możesz użyć:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    i
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #7 13 Wrz 2011 10:19
    kodzku
    Poziom 8  

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Wprowadziłem tak jak mi napisałeś ( zamieniłem "A65536" na "B65536" ale debuger ciągle wyrzuca mi błąd w kodzie
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #8 13 Wrz 2011 10:50
    marcinj12
    Poziom 40  

    Kod jest dobry i powinien działać. Trzy rzeczy:
    1. Jak deklarujesz zmienną ENERGADR? Czy jest tak arkusz?
    2. Wstawiłeś ten kod po tym, jak zmienna ENERGADR została przypisana?
    3. Możliwe że masz włączone automatyczne sprawdzanie czy zmienna została zdefiniowana, spróbuj tak zadeklarować (jeżeli wierszy będzie mniej niż 32767, a przeciwnym wypadku zamiast Integer użyj Long):

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Jeżeli to żaden z tych to najlepiej jakbyś wstawił plik albo wyślij go do mnie na PW.

    0
  • #9 13 Wrz 2011 11:00
    kodzku
    Poziom 8  

    sprawdziłem i działa. Zle określiłem zmienną i to był powód. Dzięki za pomoc.[/tex]

    0