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 - checkbox i zaznacz wszystko

korzen121 23 Lut 2014 17:57 3564 14
  • #1 23 Lut 2014 17:57
    korzen121
    Poziom 9  

    Witam

    Mam nastepujący problem i z tym pytanie.

    Czy jest możliwość stworzenia kilku Checkbox'ów (lub innych tego typu) chodzi o to by zwracał do konkretnej komórki (prawda/fałsz). Aby można było nad nimi panować grupowo i mieć dodatkowy jeden taki sam czy podobny, który powodował by zazaczenie bądz odznaczenie wszystkich?
    VBA - checkbox i zaznacz wszystko

    Tak jak pokazuję na powyższym jpg. aby był dodatkowy checkbox (pole wyboru) aby miał przypisaną funkcję zaznacz wszystkie powyższe.

    Zaznaczam, iż muszę to wykonać na excela 2002..:/

    pozdrawiam

    0 14
  • #2 23 Lut 2014 18:29
    JRV
    Specjalista - VBA, Excel

    Moim zdaniem makro. Załóżmy, że pole wyboru głównego wpływa na komórki E1. reszta E2...E9
    Sub zmien()
    Range("E2:E9").Value=Range("E1").Value
    End Sub

    0
  • Pomocny post
    #3 23 Lut 2014 18:35
    marcinj12
    Poziom 40  

    Nie wiem czy to zadziała na Excelu 2002, ale możesz sprawdzić przykład z załącznika. Oparty na "zwykłych" formantach formularza - checkboxach. Jak klikniesz prawym -> Formatuj formant to we właściwościach masz Łącze Komórki, gdzie możesz ustawić powiązanie formantu z komórką - to ta pierwsza część.

    Druga - do checkboxa można przypisać makro, które zaznaczy lub odznaczy wszystkie pozostałe. W załączonym przykładzie zaznacza/odznacza wszystkie w arkuszu, ale nic nie stoi na przeszkodzie aby je pogrupować, dodając dodatkowy warunek sprawdzający IF.
    Możesz np. zmienić nazwy na gr1CheckBox1, gr1CheckBox2 etc. i sprawdzać funkcją left(cb.Name, 3) do jakiej grupy checkbox należy. Możesz w podobny sposób sprawdzać kolumnę w adresie, do którego checkbox jest zlinkowany: cb.LinkedCell
    ---
    Edit: Rzeczywiście, czasem człowiek zapomina, że najprostsze sposoby są najlepsze :) Kolega JRV zaproponował prostsze rozwiązanie na ustawianie checkboxów.

    0
  • #5 24 Lut 2014 17:44
    korzen121
    Poziom 9  

    Witam

    Powiem tak zrobiłe zgodnie z poradami marcinj12 i wszystko pięknie działa:)
    działacie rewelacyjnie, dzieki bardzo za pomoc i porady - dużo się nauczyłem:)

    pozdrawiam

    0
  • #6 10 Maj 2015 17:53
    berou
    Poziom 6  

    Witajcie,
    Mam pytanie odnośnie poniższego tematu. Czy da się główny checbox (ten zaznaczający lub odznaczający) wszystkie pozostałe zastapić przyciskiem?
    Chciałbym dodac przycisk-Formant, po wciśnięciu którego odznaczane będą wszystkie checboxy w całym skoroszycie (3 arkuszach dokładnie).
    Dzięki za wszelkie rady
    Pozdrawiam
    Tomek

    0
  • #8 10 Maj 2015 18:48
    berou
    Poziom 6  

    Witaj,
    Bardzo dziękuję za szybką odpowiedź (nie spodziewałem się :)) Mam jednak małą prośbę.
    Zauwazyłem anomalię:
    spośród wszystkich ptaszków nie zaznaczonych zaznaczam dwa. Wciskam przycisk po czym dwa zaznaczone odznaczają się, a pozostałe zaznaczają. Chodziło mi o możliwość tylko odznaczania. Czy da się tak zrobić?
    Dziękuję za odpowiedź
    Pozdrawiam
    Tomek

    0
  • #10 10 Maj 2015 19:26
    berou
    Poziom 6  

    Witam ponownie,
    Zedytowałem warunek w IFie na:

    If czekbox.Object.Value = 1 Then
    czekbox.Object.Value = 0
    Else
    czekbox.Object.Value = 0

    i działa :)

    Dziękuje jeszcze raz!
    TB

    Dodano po 7 [minuty]:

    Super!
    Dzięki wielkie. Mam jeszcze dwa pytania odnośnie zabawy excelem i arkuszami:
    Mam kilka arkuszy w excelu:
    Czy da się zrobić tak aby zaznaczając checbox na jednym z arkuszy dezaktywować do edycji pozostałe arkusze? (na jednym z nich są pola z formułami, fajnie by było aby po takiej blokadzie liczyły dalej to co liczą). To samo się tyczy ukrywania wierszy, kolumny i pojedynczych pól w różnych arkuszach w zależności od zaznaczenia checboxa w jednym z arkuszy. Ostatnie pytanie. Czy da się wygenerować za pomocą przycisku zapisanie danego arkusza (przycisk byłby na każdym arkuszu) zapis pliku do PDFa w formie wydruku? Za wszelkie pomocne przykłady odwdzięczę się :)
    Pozdrawiam i dziękuję
    Berou

    0
  • #11 10 Maj 2015 20:36
    NAXIN
    Poziom 22  

    1) Da się, pytanie tylko czy to ma być usprawnienie czy blokada? Chowanie arkuszy czy blokowanie na hasło? Można każdą komórkę która nie jest "pożądana do edycji" po prostu wyszarzyć albo ustawić w sprawdzaniu poprawności jakiś komunikat wejściowy z prośbą o nie grzebanie.
    2) Da się eksportować/drukować do PDF-a, niektóre wersje mają wbudowany eksport w innych trzeba by było doinstalować drukarkę PDFów.

    0
  • #12 10 Maj 2015 21:19
    berou
    Poziom 6  

    1. WIdze to jako forma blokady. Cały skoroszyt jest jakby zamówieniem, zawiera 4 arkusze które dotyczą 4 różnych konfiguracji/sprzętów. Można zamówienie złożyć tylko na jednym arkuszu, dlatego deklarując jakimś checboxem na jednym z arkuszy chciałbym uniemożliwić wypełnianie pozostałych. Więc wyszarzanie niektórych i ukrycie jednego (bardzo mi zależy aby jeden ukryć - tam gdzie są obliczenia, a pozostałe by były wyszarzane tak jak pisałeś.)
    2. Super, że jest taka opcja, czy rozmiar papieru albo wygląd da się jakoś dostosować w tym przypadku do strony A4?
    Dziękuję
    Beru

    0
  • #14 11 Maj 2015 09:49
    berou
    Poziom 6  

    Dziękuję za pomoc,
    Próbowałem zaaplikować proponowane przez Ciebie zmiany do swojego excela.
    We właściwościach kodu Arkusza wpisałem tak:

    Private Sub ListBox1_Change()
    Module2.ukrywaj
    End Sub

    VBA - checkbox i zaznacz wszystko

    Następnie wprowadziłem warunek ukrywania pozostałych Arkuszy.

    VBA - checkbox i zaznacz wszystko

    Stworzyłem listbox i uzupełniłem go danymi, jednak po zaznaczeniu którejkolwiek opcji pojawia mi się komunikat:

    VBA - checkbox i zaznacz wszystko

    a po wciśnięciu Debug

    VBA - checkbox i zaznacz wszystko

    Pomysł bardzo fajny, ale czy będzie dało się do listboxów zastosować przycisk RESET, o którym pisaliśmy wyżej- taki który odznaczy wszystkie zaznaczone checki na liście? Czy da się podpiąć pod checkbox z listboxa warunek TRUE/FALSE? Czy da się ustawić tło na liście LISTBOX?

    Jeśli moje pytania zaczynają być amatorskie i irytujące proponuję dokończenie tematu poza forum.
    Dziękuję
    Berou

    Dodano po 27 [minuty]:

    Jednak opcja z tymi listboxami może być problematyczna, cały excel trzeba przebudować, czy da się zamiast warunku zaznaczenia jakiegoś checkboxa na listbox użyć warunek na zaznaczenie jakiegoś zwykłego checkboxa w arkuszu?
    Pozdrawiam
    Berou

    0
  • #15 11 Maj 2015 11:12
    NAXIN
    Poziom 22  

    Dzieńdobry, błąd prawdopodobnie wynika z tego, że nie masz na wszystkich arkuszach obiektów listbox1, tak jak w moim przykładzie, więc formuła arkusz.listbox1 nie ma do czego się odwołać, należałoby dodać warunek czy listbox istnieje.

    Jeśli chodzi o checkboxy vs listboxy... oczywiście można to zrobić, ale dodawanie eventu do każdego checkboxa może być czasochłonne jeśli masz ich 500 ;) Tutaj aby uniknąć tworzenia nowej klasy checkbox z dodatkowym eventem, "dziedziczonej" po zwykłym (piszę w cudzysłowie gdyż vba daję nam co prawda opcję "implements" ale korzystanie z niej to rzeźba w przypadku obiektu activex) możnaby zrboić po prostu pogrupowanie checkboxów i przypisanie eventu onclick do grupy, gdyż chceckboxa o ile wiem, zaznacza się niekoniecznie klikając w kwadracik, można kliknąć w dowolne miejsce jego pola aby się zaznaczył (nie mogę potwierdzić czy działa to w każdym systemie tak samo).

    0