Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel- przycisk ActiveX i warunkowe zaznaczanie

19 Wrz 2011 20:11 2932 12
  • Poziom 23  
    Witam. Bardzo prozę o pomoc w rozbudowaniu poniższego kodu.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Ogólnie to kod działa wyśmienicie ale chciałbym dodać do kodu pewną zależność. Kod zawiera pięć przycisków "ActiveX Pole wyboru" (te okienka z ptaszkami), każde z tych przycisków mogę zaznaczyć bez różnica w jakiej kolejności, jednak chcę dodać opcję że jeśli przycisk pierwszy to "PRAWDA" to mogę zaznaczyć przycisk drugi a jeśli to "NIEPRAWDA" to nie da się zaznaczyć przycisku drugiego, i tak po kolei z następnymi. Czy mogę kogoś poprosić o pomoc w rozbudowaniu kodu?
  • Pomocny post
    Poziom 40  
    Np. przy inicjalizacji okienka/arkusza (bo nie napisałeś gdzie sią umieszczone boxy) wyłącz cztery checkboxy pozostawiając pierwszy.

    wersja dla okienka:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    A potem dodaj przed każdym "end sub" dla klikniecia checkboxa kod włączający kolejny checkbox.

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    i analogicznie dla następnych.


    --------------------------------
    Ewentualnie można zrobić jeszcze zabezpieczenie że jak ktoś "odhaczy" chekboxa to drugi będzie znów wyłączony.

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Ale nie wiem czy ma to sens przy twoim programie bo ktoś może włączyć drugi checkbox, procedura "pod nim" się wykona a następnie wyłączy checkbox2 odhaczając checkbox1
  • Poziom 23  
    Niestety nie umiem wykorzystać twoich kodów żeby poprawnie działały. Może dokładniej powiem co chcę osiągnąć tym kodem. Wykorzystałem w nim pięć przycisków CheckBox (wszystkie przyciski są w jednym arkuszu), w kodzie jak pokazałem w pierwszym poście wszystko działa ok, jednak chciałem aby zastosować kolejność odkrywania kolumn pod warunkiem że poprzednie kolumny zostały już odkryte. W moim kodzie niezależnie od tego który przycisk nacisnę to te kolumny zostaną odkryte lub zakryte. Kolejność odkrywania kolumn to:
    1. 49-54
    2. 55-59
    3. 60-64
    4. 65-69
    5. 70-74

    I teraz jeśli kolumny 49-54 nie zostaną odkryte czyli przycisk CheckBox1 to NIEPRAWDA wówczas nie da się odkryć kolejnych kolumn.
    Myślałem o zrobieniu tego w inny sposób który zadowolił by mnie bardziej ale niestety tego już nie mam pojęcia jak zrobić, mianowicie chciałem zastosować coś takiego żeby zamiast 5 przycisków CheckBox dodać dwa przyciski CommandButton - i + których naciskanie odkrywałoby kolejne kolumny lub je zakrywało, czyli jedno kliknięcie na + to odkrycie kolumn 49-54 drugie kliknięcie na + to odkrycie kolejnych kolumn 55-59 i tak aż do ostatnich kolumn a naciskanie na - to zamykanie kolumn w odwrotnej kolejności, jednak taki kod musiałby pamiętać (wiedzieć) przy każdym otwarciu pliku czy kolumny zostały już odkryte lub nie. Czy dało by się coś takiego zrobić?

    Dodano po 45 [minuty]:

    Jednak udało mi się do czegoś dojść z Twoimi kodami, zrobiłem coś takiego:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    i teraz działa to tak że: jeśli pierwszy przycisk jest niezaznaczony to reszta przycisków jest nieaktywna, jeśli zaznaczę przycisk 1 to aktywuje się przycisk 2 i tak po kolei ale jak teraz zrobić żeby po zaznaczeniu przycisku 2 dezaktywował się przycisk 1 uniemożliwiając odznaczenie przycisku 1 jeśli jest zaznaczony przycisk 2? I tak dalej?
  • Poziom 22  
    JaroFon napisał:
    chciałem zastosować coś takiego żeby zamiast 5 przycisków CheckBox dodać dwa przyciski CommandButton - i +
    ... jednak taki kod musiałby pamiętać (wiedzieć) przy każdym otwarciu pliku czy kolumny zostały już odkryte lub nie. Czy dało by się coś takiego zrobić?

    Sprawdzaj, czy kolumna z danej "sekcji" jest już widoczna lub ustaw zmienną globalną w arkuszu. Zawsze można skorzystać z komórki w arkuszu i w niej przechowywać ustaloną wartość. Może to być chociażby komórka przykryta przez CommandButton.
  • Pomocny post
    Moderator Programowanie
    Zdaje się, że kolega Aldrin wskazuje dobry kierunek. Zginiesz z tymi checkboxami :)
    Proponuję pętlę sprawdzającą stan ukrycia kolumn, przypisanie argumentów w bloku Select Case i właściwa pętla działająca na kolumnach. Przykład w załączniku.
  • Poziom 23  
    @adamas_nt dzięki bardzo za plik to jest to o co mi chodziło, jednak mam pytanie jak zmienić żeby odkrywanie kolumn zaczęło się od najmniejszej? Próbowałem pozmieniać cyfry w kodzie ale to nie pomaga, ja chciałbym żeby kolejność odsłaniania zaczęła się od kolumn 49-54 i w górę a w Twoim pliku odsłanianie zaczyna się od kolumn 70-74 w dół, jak to mogę odwrócić?
  • Poziom 23  
    @adamas_nt wielkie dzięki, to jest to! :spoko:
  • Poziom 23  
    Witam ponownie. Wrócę do powyższego kodu i wykorzystania go w innej sytuacji. Tym razem ten sam kod chcę wykorzystać w tym samym pliku ale w innym arkuszu i tym razem odkrywanie i zasłanianie nie kolumn ale wierszy. Pozmieniałem trochę kod tak żeby działał na odkrywanie wierszy no ale tak pozornie bo kod nie działa, wyskakuje błąd. Tym razem chcę uzyskać odkrywanie/zakrywanie w pierwszej części wierszy:
    1: 11-13
    2: 14-16
    3: 17-19
    4: 20-22
    5: 23-25
    6: 26-28
    7: 29-31
    8: 32-34
    9: 35-37

    ...iw drugiej części wierszy:

    1: 54-56
    2: 57-59
    3: 60-62
    4: 63-65

    Czy mogę poprosić żeby zerknąć do pliku i zobaczyć co źle zrobiłem?
  • Poziom 23  
    Dodam jeszcze że odkrywanie (naciskanie na +) działa poprawnie jedynie zakrywanie (naciskanie na - ) wywala błąd
  • Poziom 23  
    @adamas_nt dzięki za pomoc, plik działa wyśmienicie. Jednak mam jeszcze jedną małą prośbę o pomoc w rozbudowaniu a dokładnie dodaniu jeszcze jednej opcji do kodu, niestety nie mam pojęcia jak to zrobić. W załączonym pliku pokazałem o co mi chodzi. Podam może parę szczegółów.
    W pliku dodałem parę arkuszy które ściśle odpowiadają swoją nazwą w odpowiednich wierszach arkusza TEST, dokładniej np. wiersz 35-37 w swojej tabeli zawiera nazwę arkusza A9 i jeśli zmienię nazwę tego arkusza na inną to automatycznie nazwa w tabelce również zostanie zmieniona na taką samą. I teraz chciałbym to połączyć ze sobą w ten sposób że z tabeli w arkuszu TEST w ciągu miesiąca nie będę potrzebował wszystkich wierszy z tabelki i dlatego dodałem opcję dwóch przycisków +/- tak aby prosto odkrywać lub zakrywać niepotrzebne mi wiersze i teraz jak zrobić żeby jak klikając na przycisk - to po ukryciu wierszy 35-37 został automatycznie ukryty arkusz z tą samą nazwą jaką zawierają ukryte wiersze? I tak we wszystkich ukrywanych wierszach. Bardzo proszę o pomoc.