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.

VBA/MAKRO/EXCELL - Wstawianie i usuwanie pustych wierszy w konkrentych miejscach

marekvba 18 Kwi 2018 10:16 423 12
  • #1 18 Kwi 2018 10:16
    marekvba
    Poziom 4  

    Witam,
    Jestem początkującym w VBA. Potrzebuje pomocy w jednym temacie:
    Chciałbym uzyskac takie makro że jak zaznacze np zakres komórek A6:B11 to chciałbym tylko w tych miejscach zwiekszyc liczbe wierszy i za pomoca wpisania konkretnej liczby wierszy (InputBox). Ważne dla mnie by dodanie wiersza synchronizowane było z okienkiem w kolumnie B tzn: zeby uzyskać efekt koncowy tak jak to podpisałem w wpliku "efekt koncowy"
    I taki makro drugie które bedzie usuwać natejsamej zasadzie co miało by dodawac.
    Obecnie makro działa tak ze odnajduje komorke z czcionkapogrubionai odniej wstawia pustewiersze i przy wstawieniu małej ilosci wierszy dziala. Alejak juz zaznacze wiekszy zakres i wpisuje wiecejwierszy by dodawalo to mieszaja siezakrsy i brak synchronizacji zkolumna B komorek w A.
    Czy jest możliwe uzyskanie takiego makra?
    Mam nadzieje ze dobrze wyjasnilem do czego dąże. Poniej kody jakie zastosowałem :( makro9usun - usuwa a Makro7 - dodaje)

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0 12
  • #2 18 Kwi 2018 22:14
    marcinj12
    Poziom 40  

    Zawsze chcesz wstawiać nowe wiersze jako przedostatnie (pomiędzy cyfrą 2 i 3 w kolumnie A)?
    Jak w input boxie wpiszesz 2, tzn. że chcesz wstawić łącznie dwa wiersze w zaznaczeniu, czy do każdej scalonej w kolumnie B komórki dostawić dwa puste wiersze w kolumnie A ?

    0
  • #3 18 Kwi 2018 22:50
    marekvba
    Poziom 4  

    "Zawsze chcesz wstawiać nowe wiersze jako przedostatnie (pomiędzy cyfrą 2 i 3 w kolumnie A)? "

    Tak, bo pomyślalem ze tak bedzie najłatwiej odnajdywac ostatni wiersz na podstawie formatu pogrubienia i wstawiac wiersz i rozszerzac analogicznie w kolumnie B scalona komórke by mieściło sie w tych mini zakresach które okreslaja scalone komórki w kolumnie B.( mini zakres mam na mysli jak np: zakres A3:B5 z przykładu w pliku) i tak samo w drugim makrze by usuwało wiersze z tych mini zakresów i zeby analogicznie zmniejszała sie ta scalona komórka w kolumnie B. Jest inny sposób na okreslanie tych zakresów z ręki i wstawianiu i usuwani konkretniej ilości wierszy?

    Jak w input boxie wpiszesz 2, tzn. że chcesz wstawić łącznie dwa wiersze w zaznaczeniu, czy do każdej scalonej w kolumnie B komórki dostawić dwa puste wiersze w kolumnie A ?"

    Do każdej scalonej w kolumnie B komórki chce dostawić dwa puste wiersza w kolumnie A i w drugim makrze chce by usuwało tyle wierszy ile wpisze w inputboxie.. Chciałbym zeby dodawało tylko do tych zakresów, scalonych komórek jakie w danym momencie zaznacze z reki.
    Tak jak w przykładzie w pliku starałem sie pokazac ze zaznaczam zakres A6;B11 i powiększyło mi po prawej stronie te dwie scalone komórki w kolumnie B po jednym wierszu. A jak wpisze dwa zeby powiekszyło po dwie. A w drugim makrze bym chciał by usuwało tez tyle wierszy ile wpisze.

    0
  • Pomocny post
    #4 19 Kwi 2018 15:58
    marcinj12
    Poziom 40  

    Wygląda mi to na jakieś "kombinowanie" i, znając życie, nie będzie to działało tak, jak chcesz - bo zaistnieją jakieś warunki, których teraz nie przewidzisz, ale tak na szybko można próbować takim makrem, jak w załączniku.
    Cała "sztuka" to dodawanie / usuwanie wierszy od końca, żeby zakres się w pętli nie przesuwał.
    Usuwanie zakłada, że usuwasz wiersze, które w kolumnie A nie mają wartości.

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #5 19 Kwi 2018 21:57
    marekvba
    Poziom 4  

    O to chodziło mi własnie. Za kazdym razem ten zakres który zaznacza powieksza mi o ilosc jaka chce wierszy.
    Dzięki wielkie :)

    0
  • #6 22 Kwi 2018 23:03
    marekvba
    Poziom 4  

    a mam pytanie jeszcze do tego teamtu jak poprawic kod albo czy jest to możliwe by w tych wierszach działała fomruła dynamiczna:
    =JEŻELI(ILE.WIERSZY($F$5:F5)>ILE.NIEPUSTYCH($F$5:$F$1001);"";INDEKS($F$5:$F$1001;MIN.K(JEŻELI($F$5:$F$1001<>"";WIERSZ($F$5:$F$1001)-WIERSZ($F$5)+1;"");ILE.WIERSZY($F$5:F5))))

    Bo jak wrzucam w zakresy jak w pliku to nie działa dynamicznie. Czy to juz za bardzo kombinowane i nie do obejscia?

    0
  • #7 22 Kwi 2018 23:24
    marcinj12
    Poziom 40  

    Co to znaczy "nie działa dynamicznie"? Załącz jakiś przykładowy plik z tą formułą i problemem.

    0
  • #8 23 Kwi 2018 07:48
    marekvba
    Poziom 4  

    Wrzucam plik.
    Chciałbym zeby działały nadal te makra wstaw i usuń oraz zeby z kolumny "F" wpisywały sie dynamicznie te nazwy do kolumny "A" tak jak wpliku to zaznaczyłem.
    Jak wykonuje "zapisz" to modyfikują mi sie dopiero tak jak mam byc ale caly czas po kazdej operacji jak wpisuje czy kasuj cos w kolumnie "F" dopiero po wykonaniu "zapisz" modyfikuje mi sie w kolumnie "A"
    W nowym pliku bez makr działa mi dynamicznie jak chce. Tutaj w tym pliku "zeszyt1poprawki1" jakas blokada wynikająca z makr?
    Mam nadzieje ze dobrze zobrazowałem temat

    0
  • #9 23 Kwi 2018 08:03
    marekvba
    Poziom 4  

    ten plik powinien działac do powyższego zapytania
    i dodatkowo czy jest możliwosc w tym temacie w tym pliku by usuwało wiersze w zakresie nawet jezeli cały zakres wierszy jest pusty? boteraz usuwa zakres tyle wierszy ile jest pustych ale zawsze musi pozostac cosw jakimswierszu by usuwało puste.

    0
  • #10 23 Kwi 2018 14:54
    marcinj12
    Poziom 40  

    Obydwa pliki są puste w środku...

    0
  • #12 23 Kwi 2018 20:56
    marcinj12
    Poziom 40  

    marekvba napisał:
    W nowym pliku bez makr działa mi dynamicznie jak chce. Tutaj w tym pliku "zeszyt1poprawki1" jakas blokada wynikająca z makr?
    W tym pliku masz włączone ręczne przeliczanie funkcji. W zakładce Formuły, w Opcje Przeliczania zmień "ręczne" na "automatyczne" - czy gdzie to tam masz w swoim excelu.

    Ta funkcja ma po prostu przepisywać wartości z kolumny F do kolumny A jeden pod drugim? Jak wstawiasz nowy wiersz to wartości w kolumnie F się mogą przesuwać w dół...
    Może po wstawieniu / usunięciu wiersza po prostu po prostu przekopiować makrem wartości z kolumny F do A5 i w dół?

    0
  • #13 24 Kwi 2018 08:04
    marekvba
    Poziom 4  

    Ok to muszę odszukać ta zamiana ręczna.
    Tak po wstawieuniu nowego wiersza będzie pusta komórka bez formuły to makrem myślałem o tym by zaznaczać komórkę A5 i w dół tak jak zaproponowałem.
    Zastanawia mnie najbardziej jak stworzyć kod by usuwalo mi wiersz jak cały zakres jest pusty. Bo teraz usuwa tylko wtedy jak coś w jakimś wierszu zakresu jest to usuwa poniżej co puste

    Dodano po 3 [minuty]:

    Tak właśnie jak zastosowałem ta funkcję dynamiczną bo chce uzyskiwać że jak np w połowie zakresu chce dodać w trzech zakresach po 3 wiersze to żeby to przesuwalo w dół od tego momentu gdzie było zaznaczanie i dodawane wiersze

    Dodano po 1 [minuty]:

    No.tak. ta ostania propozycja zaproponowana by przekopiowywac makrem była by też ok

    Dodano po 10 [godziny] 32 [minuty]:

    ]W tym pliku masz włączone ręczne przeliczanie funkcji. W zakładce Formuły, w Opcje Przeliczania zmień "ręczne" na "automatyczne" - czy gdzie to tam masz w swoim excelu.

    Udało sie odnaleźć i działa poprawnie. Dzięki
    Pozostaje najważniejsza kwestia usuwania wierszy gdy wszystkie wiersze w zakresie są puste i by nadal pozostawala tez opcja ze usuwa wiersze puste z zakresu gdzie w zakresie też są zapełnione wiersze( tak jak obecnie to działalo).

    0
  Szukaj w 5mln produktów