logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Excel VBA – jak utworzyć listę rozwijaną z nazwami arkuszy i przejście do wybranego

katomasz 21 Lip 2005 10:59 14650 3
REKLAMA
  • #1 1669854
    katomasz
    Poziom 16  
    Posty: 262
    Pomógł: 12
    Ocena: 11
    mam w skoroszycie kilkadziesiąt arkuszy, każdy o jakieś nazwie. Potrzebuję zrobić listę rozwijalną, która będzie pobierała nazwy wszystkich arkuszy i umożliwiała wybór. Po wybraniu odpowiedniej pozycji będzie przenosiła do wybranewgo arkusza. Proszę o pomoc.
  • REKLAMA
  • #2 1671417
    Yoga
    Poziom 21  
    Posty: 372
    Pomógł: 39
    Ocena: 8
    To makro to chcesz napisać hobbystycznie?? Przecież prawie to samo masz włączając w Opcjach widok paska Karty arkuszy.
  • REKLAMA
  • #3 1672325
    katomasz
    Poziom 16  
    Posty: 262
    Pomógł: 12
    Ocena: 11
    Nie nazywałbym tego hobby. Potrzebuję, aby jakikolwiek laik mógł zajrzeć do odpowiedniego arkusza nie przeglądając, gdzie on się znajduje. Wszystko mi działa, lecz problemem jest pobranie wszystkich nazw arkuszy do listy. Chcę, aby działo się to automatem. Uruchamiam plik, uruchamia się makro, pobiera nazwy arkusuzy, umieszcza je w liście, ja ją przeglądam i wybierając którąś z pozycji jest tam przenoszony. I wsio.
  • #4 1676043
    bobo
    Poziom 29  
    Posty: 1318
    Pomógł: 69
    Ocena: 686
    Sam kod w VBA, w najprostszej postaci, nie jest skomplikowany. Z pewnych wzgledów jest to bardzo uproszczony sposób na uzyskanie zamierzonego zadania. Na poczatek należy jasno okreslic pewne warunki jak ma dzialac taka procedura. Po pierwsze to w zadnym przypadku nie powinno sie do tego celu korzystac z dodatkowego arkusza. Po drugie procedura powinna wystartowac na starcie skoroszytu. Po trzecie okno powinno znikac po wykonania zadania.
    Wykonanie:
    1.utworzyc forme UserForm
    2.utworzyc kontrolke ListBox
    3.utworzyc przycisk CommandButton
    Kod:
    '***** kod umieszczony w UserForm
    Dim a As Integer
    Private Sub UserForm_Initialize()
    '/licznik arkuszy
    a = Sheets.Count
    '/wypelnianie kontrolki ListBox
    For n = 1 To a
    UserForm1.ListBox1.AddItem (Sheets(n).Name)
    Next n
    '/ustawienie kursora na pierwszej pozycji
    ListBox1.ListIndex = 0
    End Sub

    '***** kod umieszczony w kontrolce Button
    Private Sub CommandButton1_Click()
    '/wybor pozycji z listy
    c = (ListBox1.ListIndex) + 1
    '/skok do wybranego arkusza
    Worksheets(c).Activate
    '/zamkniecie okienka
    Unload Me
    End Sub

    Uwagi:
    1. do wywolania powtornego UserForm mozna postawic na pasku dodatowy przycick
    1. kontrolka ListBox zaczyna index od 0, nie od 1, przy braku zaznaczenia wartosc wlasciwosci ListIndex jest -1
    2. zamiast kontrolki OK, mozna wprowadzic reakcje powodowana dwukrotnym przyciskiem klawisza myszy na okreslonej pozycji listy
    3. pozycje na liscie okreslamy wlasciwoscia Value
    4. lokalizacje na liscie umozliwia wlasciwosc ListIndex
    5. mozna sie zabezpieczyc przed pojawianiem sie bledu przed nie wskazaniem zadnej pozycji ( dotyczy wlasc. Value )
    Pozdrowka
    W załączniku przyklad
    Załączniki:
    • tescik1a.xls (57.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
REKLAMA