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.

EXCEL VBA - CommandButton oraz OptionButton - klawisz usuń - nie działa usuwanie

ania1981 25 Wrz 2012 09:20 2508 7
  • #1 25 Wrz 2012 09:20
    ania1981
    Poziom 6  

    Witam,

    nadal chcę rozbudować kod napisany przez "adamas_nt", który usuwa z danego zakresu/ramki chceckbox'y. Tym razem chciałabym żeby usuwając brał również pod uwagę (dodane w ramce) CommandButton oraz OptionButton.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Obecny kod jest taki. Wydaje mi się, że powinnam zmienić tą linijkę
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    ale oczywiście nie wiem jak próbowałam kilka wersji z podpowiedzi pod (SHIFT+F2), ale i tak nie usuwa tych klawiszy.

    Proszę o pomoc.

    0 7
  • Pomocny post
    #2 25 Wrz 2012 11:37
    adamas_nt
    Moderator Programowanie

    W przykładowym arkuszu:
    1. Usuń "Przycisk 339" (jest wysoki na 1pkt.) Najprościej zaznacz widoczny przycisk i przesuwaj się tabulatorem.

    2. Podmień makro, tu dobrze kombinujesz :) (porównaj sobie z tym co jest. Przyda się na przyszłość), ale trzeba szukać 4 elementów.

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Powoli zaczyna prosić się o tablicę, ale dla czterech może jeszcze być "ciurkiem".

    P.S. Staraj się nie powielać tematów. Lepiej zadać pytanie w istniejącym.

    0
  • #3 25 Wrz 2012 16:28
    ania1981
    Poziom 6  

    działa dziękuję..

    P.s. postaram się, ale apetyt rośnie w miarę jedzenia.

    0
  • #4 27 Wrz 2012 09:14
    ania1981
    Poziom 6  

    Powyższy kod wykorzystuję dla różnych dokumentów i w obecnej chwili używam go w taki sposób, aby po odczytaniu jaki numer ma ramka kończył USUWANIE:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    mam jednak problem z numeracją ramek - obecny kod umie je zliczać do 2 :-))))

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    a ja chciałabym, aby liczył dalej i wstawiał numer 1,2,3,4 .....
    napisałam takie coś - co moim zdaniem powinno działać - ale nie działa.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    co z tym zrobić??? Proszę o pomoc.

    0
  • #5 27 Wrz 2012 10:59
    adamas_nt
    Moderator Programowanie

    ania1981 napisał:
    co z tym zrobić??? Proszę o pomoc.
    A tak jednym zdaniem, to co chcesz robić (przedstawiony kod zamienia tylko cyferki, jeśli występują)?

    0
  • #6 27 Wrz 2012 11:16
    ania1981
    Poziom 6  

    jednym zdaniem? hmm...

    popatrz na ramkę w przykładzie jak dodaje kolejną to nadają im się numery: pierwsza ta kopiowana ma nr 1, a dodawane nr 2 itd. więc jest to numerowanie ramek.

    P.s. A przy okazji ta ramka, którą pokazuję jest przykładowa - oficjalna (nie do pokazania na formum ;-)) jest już mega rozbudowana i nagrywanie makra kopiowania robi się mega uciążliwe (nie mówiąc ile trwa jak nacisnę dodaj, aby się pokazała). Tu moje pytanie czy mógłbyś na przykładzie tej ramki pokazać mi makro "tablicy" dla tej ramki? Oczywiście muszą kopiować się wszystkie formanty (a mam ich już full)

    0
  • Pomocny post
    #7 04 Paź 2012 11:33
    adamas_nt
    Moderator Programowanie

    Sorki, że milczałem do teraz, ale byłem "trochę" zajęty ;)

    W przykładzie wstawianie ramki poniżej tej, w której naciśnięto przycisk. Uwagi wymaga sposób wyliczania wartości zmiennych.

    W arkuszu ramka ma wysokość 4 wierszy, jest 1 wiersz nagłówkowy.
    Nr wierszy, gdzie nastąpi wstawianie nowych dla następnej ramki to: 6, 10, 14, itd
    Kluczowe jest wyliczenie Nr wiersza na podstawie wartości Top naciśniętego przycisku. W tym celu najlepiej wstawić (nawet ręcznie) dodatkowe dwie ramki, sprawdzić Shapes(Application.Caller).Top przycisków i zapisać wartości.
    Przycisk [dodaj/usuń] pierwszej= 126,75
    drugiej= 257,25
    trzeciej= 387,75

    Liczymy:
    387,75-257,25=130,5 (różnica między ramkami wewnątrz) - rMRW
    126,75(Top przycisku pierwszej ramki)-130,5= -3,75 - rMTp
    Różnica między pierwszym Nr wiersza, a ilością wstawianych to: 6-4=2 - rIW
    Ilość wstawianych wierszy=4 -iW

    Wzór na Nr wiersza: Nr wiersza=((Top naciśniętego przycisku - rMTp) / rMRW) * iW + rIW

    Dlaczego taki, a nie inny? Przeanalizuj... ;)

    Podstawiamy i (dwa minusy dają plus) mamy:

    Code:
    wrs = ((objTop + 3,75) / 130.5) * 4 + 2
    Czasem coś "się" przesunie, więc lepiej zaokrąglić do całkowitej (Val, Round, lub t.p.) Rozmiar tablicy to ilość kontrolek w jednej ramce, reszta w komentarzach makr.

    Oczywiście nie można dokładać wierszy, zmieniać ich wysokości, przesuwać przycisków itp, ponieważ wpłynie to na położenie kontrolek w arkuszu. W takim przypadku należy wszystko przeliczyć od nowa.

    0
  • #8 04 Paź 2012 17:59
    ania1981
    Poziom 6  

    thx za wszystko :-)))

    0