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.

Makro do obrobki pliku o róznej ilości wierszy

arlando 08 Lut 2019 14:45 138 9
  • #1 08 Lut 2019 14:45
    arlando
    Poziom 2  

    Witam,
    Zbudowałem macro do obrobki pliku, wszystko działa tylko niestety nie wiem jak zmienic kod aby makro obrabialo rekordy o róznej ilości. Czesto jest tak ze jest rozna liczba wierszy a moje makro robi konkretnie na pierwsze 5000 rekordów. Potrzebuej aby makro wiedziało ze w danym pliku jest np tylko 850 rekordów itd. Ktos pomoze? :D

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0 9
  • #2 09 Lut 2019 07:08
    PRL
    Poziom 34  

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #3 09 Lut 2019 14:34
    lanzul
    Poziom 27  

    arlando napisał:
    aby makro wiedziało ze w danym pliku jest np tylko 850

    Zaznaczanie do kopiowania/przenoszenia/itp. bez używania tzw. zmiennych.

    Jeśli masz tabelę w arkuszu, a w tabeli wiersze w kolumnach zachowują ciągłość danych, tzn. brak jest pustych komórek, to można w ten sposób:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    lub
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    Jest to kopiowanie danych z kolumny "H".

    Jeśli w kolumnie ciągłość danych nie jest zachowana i występują puste komórki, to można w ten sposób:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    Nie sprawdzi się jednak, gdy pod tabelą znajdują się jakieś inne dane, typu: opisy, inne tabele, itd., ale przecież u siebie kopiujesz całe kolumny od pierwszego wiersza do ostatniego, więc to raczej nie ta sytuacja.

    W twoim przypadku, po zgrubszym uporządkowaniu kodu, bez tworzenia zmiennych i pętli, odwołań i obiektów oraz przy założeniu ciągłości danych w kopiowanych kolumnach, wyglądałoby to mniej więcej tak (początek makra masz obcięty, więc nie wiadomo co tam jest):
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #4 09 Lut 2019 15:55
    PRL
    Poziom 34  

    @Lanzul

    Cytat:
    Zaznaczanie do kopiowania/przenoszenia/itp. bez używania tzw. zmiennych.


    Jesteś zwolennikiem spiskowej tendencji nie używania tzw. zmiennych?
    Może to jakaś programistyczna klątwa...

    Mnie uczono, że wielokrotne wywoływanie funkcji obniża wydajność kodu.

    0
  • #5 09 Lut 2019 19:57
    lanzul
    Poziom 27  

    Jesteś przeciwnikiem przekazania "suchej informacji" koledze arlando występującemu po raz pierwszy na forum ?
    Sądząc po załączonym kodzie, nie ma zbyt "wielkiej wprawy" w posługiwaniu się vba.
    Tak jak ty przekazałeś mu info o sposobie rozwiązania jego problemu, tak "inni" wskazali (lub może będą dalej wskazywać) "alternatywne" rozwiązania.

    Czasy kiedy mr Ford produkował samochody w dowolnym kolorze pod warunkiem, że będzie to kolor czarny już minęły i to raczej bezpowrotnie ... teraz można i tak, i tak, i na wspak ... jak się komu zachce ... Róbta co chceta ... jeśli może to komuś w czymś pomóc ...

    0
  • #6 09 Lut 2019 19:59
    PRL
    Poziom 34  

    Nie odpowiedziałeś mi na moje pytanie.
    Nie musisz.

    0
  • #7 11 Lut 2019 14:09
    arlando
    Poziom 2  

    @lanzul Tak jestem pierwszy raz. Mimo wszystko dziękuję za wsporacie o pomoc!!!
    Toja edycja makra dziła proawidłowo - ale resultat jest ten sam.
    Formułe Range("D2").FormulaR1C1 = "=""+""&RC[-1]" przeciaga az do ostatniego wiersza w skoroszycie. (zostają same "+" w momencie kiedy kończą się rekordy.
    Podouje to ze potem wywala bład w importowaniu danych.

    Chciałbym aby formuła zatrzymywała się na ostatnim rekordzie nadej listy.
    Dziękuję za pomoc :)

    0
  • Pomocny post
    #8 11 Lut 2019 15:31
    PRL
    Poziom 34  

    Poprawiony Twój kod (używając jednej zmiennej 'ow');):

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #9 12 Lut 2019 02:05
    lanzul
    Poziom 27  

    arlando napisał:
    Podouje to ze potem wywala bład w importowaniu danych

    Załącz reprezentatywny przykład obrazujący układ danych, dane oczywiście nieprawdziwe.

    0
  • #10 12 Lut 2019 11:20
    arlando
    Poziom 2  

    @PRL działa perfekcyjnie. O to chodziło.
    Dziękuję Bardzo!!!! :)

    0