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) Wklejanie wierszy do spełnienia pewnego warunku

a.czerwinski3 12 Nov 2018 09:34 486 13
  • #1
    a.czerwinski3
    Level 6  
    Cześć,

    Zwracam się z prośbą o pomoc, ponieważ potrzebuję napisać makro, które kopiowałoby wybrany wiersz, od pola B2 w Arkuszu1 (to wiem jak to zrobić) a następnie wklejałoby go w następne. Tu zaczynają się schody, ponieważ nie chcę na sztywno wpisywać zakresu wklejania. Warunek ma być następujący, jeżeli w kolumnie A (NAZWA DOSTAWCY), nie ma żadnej wartości to ma przestać wklejać rekordy w pola B2, B3, B4 itp.
    Będę wdzięczny za pomoc, ponieważ sam nie potrafię tego ogarnąć a VBA poruszam się co najwyżej intuicyjnie a moje ubogie doświadczenie w tym
    aspekcie nie pozwala mi na pokonanie problemu.
    W załączniku plik do wglądu.
    Z góry bardzo dziękuję za pomoc :)

    pozdrawiam
  • #2
    PRL
    Level 40  
    Potrzebujesz znać numer pierwszego wolnego wiersza, czyli:

    Code: vbscript
    Log in, to see the code
  • #3
    a.czerwinski3
    Level 6  
    Przepraszam ale nie rozumiem, mam coś takiego zastosować ?

    Range(Arkusz1.Range("b2"), Range("b2").End(xlToRight)).Copy _
    Range(Arkusz1.Range("B3"), NW = Cells(Rows.Count, "A").End(xlUp).Row + 1)
  • #4
    PRL
    Level 40  
    Code: vbscript
    Log in, to see the code
  • #5
    a.czerwinski3
    Level 6  
    niestety nie działa :(, swoją drogą te zmienne "nw" i "OK" jaki mają mieć typ, ponieważ ustawiłem na integer .

    pozdrawiam,
  • #6
    PRL
    Level 40  
    Mój błąd tam był.

    Code: vbscript
    Log in, to see the code
  • #7
    a.czerwinski3
    Level 6  
    nadal nie działa :(, trzeba zdefiniować zmienną A (dałem jej typ long), ale wyświetla mi się taki message.

    pozdrawiam,
  • #8
    PRL
    Level 40  
    Co Ty kombinujesz?
    Wyślę Ci plik z makrem, które kopiuje zakres 'B2:B7' do pietwszego wolnego wiersza w kolumnie 'A'.

    Nie opisałeś, gdzie 'B2:B7' ma być wklejane, więc zmień sobie indeksy komórki.
  • #9
    a.czerwinski3
    Level 6  
    eee chyba się nie zrozumieliśmy, nie wiem co masz na myśli przez zakres "B2:B7" ale na pewno nie chciałem tego kopiować.
    Pobrałem Twój plik, ale nie to miałem na myśli tworząc ten post. Otóż on ma skopiować zakres od "B2:G2" i tak jak napisałem na początku
    wklejać go w pola B3; B4; B5 ... aż do B29. Gdyby pojawiła się jakaś nazwa dostawcy w polu A30 to wówczas ma wkleić zakres "B2:G2" w polu B30.
    Ma przestać wklejać rekordy do kolumny B gdy zobaczy pierwsze puste pole w kolumnie A. Jak powinien wygląd plik dodaje do załączenia.
    Proszę , jeżeli jeszcze nie wyczerpałem Twojej cierpliwości, to duża prośba o pomoc.
    Bardzo dziękuję.

    pozdrawiam,
  • #10
    PRL
    Level 40  
    Teraz to jest jasne.

    Code: vbscript
    Log in, to see the code


    Albo tak:

    Code: vbscript
    Log in, to see the code
  • #11
    a.czerwinski3
    Level 6  
    Sukces !!! :D, jest radość wielka, tylko jeszcze jedno dopytanie, ponieważ trzeba było zdeklarować zmienną x (dałem jej typ integer).
    To chyba nie jest żaden problem tak ?

    Bardzo dziękuję :)

    pozdrawiam
  • Helpful post
    #12
    PRL
    Level 40  
    Mówią, że deklarowanie zmiennych, to dobra cecha programisty. Są języki, gdzie bez deklaracji się nie da. W VBA nie jest _wymagane_ deklarowanie, ale jak chcesz, to używaj 'Dim'.;)

    P.S. Wykorzystałeś makro 'Kopiuj2'?
  • #13
    a.czerwinski3
    Level 6  
    Jeszcze raz bardzo dziękuję za pomoc :) i zamykam temat.

    pozdrawiam,
  • #14
    a.czerwinski3
    Level 6  
    Jeszcze raz bardzo dziękuję za pomoc :) i zamykam temat.

    pozdrawiam,

    Dodano po 2 [minuty]:

    Wybrany Użytkownik wykazał się dużą wiedzą oraz cierpliwością do rozwiązania problemu :)