Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] EXCEL/VBA - pętla plus warunek

n1co11 23 Oct 2018 13:17 1059 16
Renex
  • #1
    n1co11
    Level 6  
    Witam wszystkich użytkowników.

    Niestety jestem początkującym w tematyce VBA. Potrzebuję formuły tworzącej pętlę z warunkiem if do poniższej tabeli. EXCEL/VBA - pętla plus warunek .

    Chciałbym aby pętla opierała się na "numerze dostawcy" i po zmianie numeru na inny - początek nowej pętli. Pusta kolumna = koniec pętli.

    Z góry dziękuję za pomoc
  • Renex
  • #2
    PRL
    Level 40  
    Tylko Ty wiesz, co chcesz osiągnąć, ja nie wiem.
    Ale co do opisu, to:

    Code: vbscript
    Log in, to see the code
  • Helpful post
    #3
    adamas_nt
    Moderator of Programming
    Może inaczej. Napisz co chcesz zrobić i jaki osiągnąć efekt. Wskazany plik w załączeniu.
  • Renex
  • #4
    n1co11
    Level 6  
    Dziękuję za zainteresowanie. Próbuje stworzyc macro, które pomoże mi w pracy. Poniżej wkleje wszystko co mam, niestety jest to efekt moich wypocin i prób podmian z innych marc (pewnie wiekszośc co tu jest to bzdury.. no ale efekt jest dla mnie najważniejszy). Macro działa, ale potrzebuję, aby obejmowało tylko dany "numer dostawcy". Po zmianie numeru na inny - start nowego macra.
    Code: vbscript
    Log in, to see the code
  • Helpful post
    #5
    PRL
    Level 40  
    Co to robi?
    Po co Ci ten plik z SendKeys?
  • #6
    n1co11
    Level 6  
    PRL wrote:
    Co to robi?
    Po co Ci ten plik z SendKeys?


    W Excelu nagrywam macro, które odpalam w systemie logistycznym na jakim pracuje.
  • Helpful post
    #7
    PRL
    Level 40  
    Rozumiem.

    A teraz napisz proszę, co Ci nie działa.;)
  • #8
    n1co11
    Level 6  
    Obecnie macro nagrywa mi całą zawartość tabeli ( tabela 1)


    EXCEL/VBA - pętla plus warunek

    Chce, aby macro dzieło się, warunkiem musi być zmiana "numeru dostawy"

    EXCEL/VBA - pętla plus warunek
  • Helpful post
    #9
    PRL
    Level 40  
    Dla modułu arkusza, gdzie jest 'Tabela1' użyj:

    Code: vbscript
    Log in, to see the code


    P.S. Adamas_nt masz lepszy pomysł?
    Autor wątku jest skromny w wyjaśnieniach jego kłopotu...

    Chce, aby macro dzieło się, warunkiem musi być zmiana "numeru dostawy"?
  • Helpful post
    #10
    adamas_nt
    Moderator of Programming
    PRL wrote:
    Adamas_nt masz lepszy pomysł?
    Open for Output...
    Zrozumiałem, że autor zapisuje excel'owską tabelę w jakimś pliku tekstowym . Ten wynikowy plik (*.mac) jest źródłem dla czegoś poza Excelem. W tym czymś, dane formatowane są jak na obrazku. I chodzi chyba o to, żeby dla każdego Nr Dostawcy była osobna tabela (kolejny plik), czy cóś...

    Ale mogę się mylić ;)
  • Helpful post
    #11
    lanzul
    Level 30  
    n1co11 wrote:
    1. ... Chciałbym aby pętla opierała się na "numerze dostawcy" i po zmianie numeru na inny - początek nowej pętli. Pusta kolumna = koniec pętli.

    n1co11 wrote:
    2. ... działa, ale potrzebuję, aby obejmowało tylko dany "numer dostawcy". Po zmianie numeru na inny - start nowego macra.

    n1co11 wrote:
    3. ... Obecnie macro nagrywa mi całą zawartość tabeli ( tabela 1)

    Pkt 1 i 2 - Pętla główna przebiega "z góry na dół" po wszystkich wpisach w tabeli i "wyszukuje" takie same "numerki" (o ile oczywiście będą one posortowane, to podstawa) do czasu aż natrafi na nowy numerek - tu jest jasne co ma się dziać.

    Następne "opisy" są już niejednoznaczne, ponieważ wskazują z jednej strony na to, iż kolejnym krokiem ma być przebieganie pętlą po kolumnach -
    "początek nowej pętli. Pusta kolumna = koniec pętli" - względnie uruchamianie jakiejś innej procedury - "start nowego makro"

    Pkt 3 - Makro ma również za zadanie tworzenie tabeli ?

    Ps.:
    Główna "wada" twojego obecnego makra, która najbardziej rzuca się w oczy, to bardzo długie trzymanie otwartego pliku:
    "Open plik For Output As #1 ... 'mnóstwo poleceń' ... Close #1"
    i do tego bez blokady dostępu dla innych procesów/uzytkowników.

    Nie robi się tak - gdyby wszystko sprowadzało się tylko do sporządzenia paru wpisów w pliku, to spoko, ale tutaj fruwają jeszcze jakieś pętle (sztuk 3) i warunki.
    Utwórz wpierw zmienną zawierającą wszystkie "złączenia alfanumeryczne", a dopiero na samym końcu wpisuj tę zmienną do pliku.
    ...
    "autECLSession.autECLPS"
    Czy to jest może jakieś ibm'owskie PCW ?
    ...
    Twoje makro w przystępniejszej, wizualnie, formie:
    Code: vbscript
    Log in, to see the code
  • Helpful post
    #12
    clubs
    Level 38  
    Jakiś mainframe
  • #13
    n1co11
    Level 6  
    Witam, lanzul dziękuję za poprawienie macra, sprawdziłem działa jak złoto. Z góry przepraszam za opis problemu faktycznie jest mało czytelny, niestety nie umie tłumaczyć. Tak jak Panowie się domyśliliście tabela w Excelu jest źródłem danych, tworze plik tekstowy, który odtwarzam w moim programie logistycznym w pracy. Zaprezentuję wam treść pliku tekstowego jak wygląda plus jak bym chciał żeby wyglądał. Może to rozjaśni temat.

    Jak jest :
    Code: text
    Log in, to see the code


    Tak powinno być:
    Code: text
    Log in, to see the code


    Dodano po 6 [godziny] 32 [minuty]:

    w załączeniu plik w Excelu. Błagam o pomoc :)

    Password: start15
  • Helpful post
    #14
    adamas_nt
    Moderator of Programming
    Po mojemu, to źle masz to zrobione. Po co pętla 'For', jeśli z niej wychodzisz. Po co zewnętrzna 'Do', j.w.

    Zdaje się, że wystarczy jeden przebieg wg kolumny AZ, z warunkiem ilosc>0 oraz "czujką" (instrukcja 'If') dla numerdos<>poprzedni numerdos, gdzie wstawiasz odpowiednie linie (coś a'la nagłówek/stopka). Chyba, że coś przeoczyłem...

    Taki schemat (wklej do modułu i uruchom - zapisze w kolumnie BD) pisany "na kolanie"
    Code: vbscript
    Log in, to see the code
  • Helpful post
    #15
    clubs
    Level 38  
    n1co11 wrote:
    Błagam o pomoc :)

    Ja to zrozumiałem tak (uszczuplone do granic możliwości :) na dwóch najprostszych pętlach )

    Code: vbscript
    Log in, to see the code
  • #16
    n1co11
    Level 6  
    Witam

    Panowie jesteście wielcy!! clubs o coś takiego własnie mi chodziło! Bardzo dziękuję wszystkim za pomoc w mojej sprawie. Naprawdę nie wiem jak ja sie wam odwdzięczę!
  • #17
    n1co11
    Level 6  
    Witam

    Panowie jesteście wielcy!! clubs o coś takiego własnie mi chodziło! Bardzo dziękuję wszystkim za pomoc w mojej sprawie. Naprawdę nie wiem jak ja sie wam odwdzięczę!

    Dodano po 4 [minuty]:

    Jeszcze raz dziękuję!