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] Indeks pola kombi

14 Sty 2012 13:55 4236 5
  • Poziom 22  
    Mam 2 pola kombi. Zawartość drugiego jest wybierana z dynamicznego zakresu określanego pierwszym polem.
    Przy pierwszym wyborze z Kombi1, lista Kombi 2 ma 10 pozycji.
    Przy drugim wyborze z Kombi1, lista w Kombi2 ma 2 pozycje.
    Jeśli indeks Kombi2 wykracza poza poprzednio ustalony index, wyskakuje mi błąd VBA.

    Pytanie jest następujące: jak wraz ze zmianą definicji zakresu wejściowego danych pola kombi ustawić indeks wyboru na 1?
  • Poziom 12  
    wrzuć plik to pomyślimy :)
  • Poziom 22  
    Nie chciałbym pokazywać całości xlsx. Pola Kombi nie są definiowane w VBA a są wstawione bezpośrednio w arkusz. Nie wiem jak się do nich odwołać w vba.

    Szukam po omacku i natrafiłem na combobox.itemindex. Jak odwołać się jednak w vba do formantu wstawionego bezpośrednio do arkusza?
  • Poziom 40  
    Nikt Cię nie prosi o wrzucenie całego super-tajnego pliku z danymi na publiczne forum, ale chyba na boku plik z przykładem ilustrującym problem możesz chyba przygotować, bo suchy opis jest tak średnio zrozumiały...
  • Poziom 22  
    Tworzenie pliku przykładowego wymagałoby więcej pracy niż szukanie rozwiązania.

    Problemem było odwołanie się do formantu arkusza typu pole kombi, które nie zostało w żaden sposób zdefiniowane w vba i ustawianie indeksu drugiego pola kombi tak aby nie wskazywał na wartość spoza zakresu ustalonego pierwszym polem kombi - a tak się czasem działo po wywołaniu makra przypisanego do pola1, ustalającego nowy zakres dla pola2.

    Rozwiązaniem było ustawienie indeksu pola2 na 1 przed zmianą zakresu w polu1.
    Odwołaniem w vba dla formantu jest:
    Sheets("1").Shapes("Rozwiń 2").DrawingObject.ListIndex = 1

    Zatem problem chyba się rozwiązał.
    Dziękuję za zwrócenie uwagi chęci pomocy.
  • Poziom 28  
    Jak napisał kolega marcinj12 aby pomóc trzeba zrozumieć.
    Cytat:
    Tworzenie pliku przykładowego wymagałoby więcej pracy niż szukanie rozwiązania.

    Myślę, (choć jak zawsze podkreślam nie znam się na komputerach) że usunięcie danych z arkuszy nie jest takie skomplikowane.
    Cytat:
    odwołanie się do formantu arkusza typu pole kombi, które nie zostało w żaden sposób zdefiniowane w vba

    I tu się nie zgodzę. Jest zdefiniowane. Jeden ze sposobów pokazałeś w swoim poście.
    Cytat:
    Sheets("1").Shapes("Rozwiń 2").DrawingObject.ListIndex = 1

    Co prawda powyższy cytat jest wyrwany z kontekstu całego kodu i w dalszym ciągu trudno jest stwierdzić jego 100%-ową prawidłowość. No ale jeżeli działa, to niechaj będzie, że jest prawidłowy (dopóki się nie wyłoży).