| Jak ułatwić sobie pracę z dużą ilością arkuszy? |
|
Problem: Pracuję na bardzo złożonym pliku, składajacym się z kilkudziesięciu arkuszy. Potrzebuję metody pozwalajacej w szybki sposób odnaleźć i uaktywnić wybrany arkusz. ![]() Rozwiązanie: Możesz utworzyć formularz zawierający pole listy (z nazwami arkuszy) i pole tekstowe (do wpisywania nazwy arkusza). Następnie możesz skorzystać z poniższego kodu (makro zadziała tylko dla odkrytych arkuszy). Option Explicit 'Lista arkuszy - zmienna poziomu modulu Dim maListaArkuszy() Private Sub ListBox1_Click() 'Klikając na pole listy, aktywuje wskazany arkusz Worksheets(Me.ListBox1.Value).Activate End Sub Private Sub Quit_Click() Unload Me End Sub Private Sub TextBox1_Change() Dim iLicznik As Integer With Me.ListBox1 'Zaladowanie do pola listy calej tablicy z nazwami arkuszy .List = maListaArkuszy 'Petla po wszystkich nazwach arkuszy - zaczyna od dolu For iLicznik = UBound(maListaArkuszy) - 1 To 0 Step -1 'Jezeli nazwa arkusza jest rozbiezna z wartoscia pola kombi - usuwa wpis z listy If Not UCase(.List(iLicznik)) Like UCase(Me.TextBox1.Value) & "*" Then .RemoveItem iLicznik Next iLicznik End With End Sub Sub UserForm_Initialize() Dim wksArkusz As Worksheet Dim iLicznik As Integer 'Petla po wszystkich arkuszach w skoroszycie For Each wksArkusz In ThisWorkbook.Worksheets 'Zwiekszenie licznika iLicznik = iLicznik + 1 'Zmiana rozmiaru dynamicznej tablicy ReDim Preserve maListaArkuszy(1 To iLicznik) 'Dodanie do tablicy nazwy arkusza maListaArkuszy(iLicznik) = wksArkusz.Name Next wksArkusz 'Wypelnienie pola listy tablica z nazwami wszystkich arkuszy Me.ListBox1.List = maListaArkuszy End Sub |
|
| Zmieniony ( Środa, 30. Czerwiec 2010 10:14 ) |
.jpg)