Tam, gdzie dane pobrane z bazy danych przekraczają zakres pola kombi, nowe elementy po prostu nie są wyświetlane. Aby temu przeciwdziałać, zakres leżący u podstaw pól List lub Combo musi się rozszerzać lub kurczyć, aby dopasować się do danych. W tym artykule opisano, jak to zrobić automatycznie.
Zakłada się, że czytelnik ma wyświetloną wstążkę programisty i zna edytor VBA. Jeśli nie, wybierz Google „Excel Developer Tab” lub „Excel Code Window”.
Profesjonalny sposób wyświetlania pól kombi polega na rozszerzaniu lub zmniejszaniu ich zakresów w zależności od potrzeb. Na przykład:
Kluczem do zakresu dynamicznego jest monitorowanie liczby wypełnionych wierszy w odpowiedniej kolumnie za pomocą funkcji =countA. Ta funkcja zlicza zapełnione elementy w sekwencji komórek, aż trafi na ostatnią; w przypadku pierwszego diagramu na powyższym obrazku byłby to rząd 11.
Automatyczne utrzymywanie zakresu wymaga zdefiniowanych nazw w celu śledzenia liczby wypełnionych wierszy. Na przykład używamy eCol (kolumna końcowa) i eRow (wiersz końcowy), aby zdefiniować granice naszego zakresu. Im więcej wierszy wypełnimy, tym większa staje się wartość eRow.
Zdefiniowane powyżej nazwy ustawiają listę na szerokość jednej kolumny (eCol = 1) przez liczbę wypełnionych wierszy w eCol (eRow = 11)
Wreszcie tytuły pojawiają się w zakresie „A2:A” i eRow. Zauważysz, że funkcja Indeks służy do ustalenia ostatniej komórki w zakresie o nazwie „Tytuły”. Efektywnie zakres „A2:A” i eRow przekłada się na „A2:A11” na tym etapie.
Możemy ustawić zakres dynamiczny automatycznie podczas otwierania skoroszytu, używając procedury podrzędnej Auto_open, która jest uruchamiana, zanim skoroszyt stanie się widoczny.
Kod
Otwórz skoroszyt i wypełnij go polem kombi i niektórymi danymi. Przykładowy skoroszyt użyty w tym ćwiczeniu można znaleźć w tym miejscu.
Otwórz okno kodu VBA i wstaw moduł. Skopiuj poniższy kod do modułu.
Zdarzenie Auto_Open ustawia wartości ostatniego wiersza i ostatniej kolumny dla zakresu dynamicznego „Tytuły” i odnotowuje kolejne wprowadzone zmiany.
Sub auto_open()
Dim eRow As Integer, eCol As Integer, i As Long
On Error Resume Next
'Clear the present define names, to avoid any duplications
activeworkbook.Names("eCol").Delete
activeworkbook.Names("eRow").Delete
activeworkbook.Names("Titles").Delete
Range("A1").Select
'Titles will appear in the first column, A in this case
eCol = 1
'Find the last populated row
eRow = Sheets("Main").Cells(Rows.Count, eCol).End(xlUp).Row
'Define the names
activeworkbook.Names.Add Name:="eCol", RefersTo:="=COUNTA($1:$1)"
activeworkbook.Names.Add Name:="eRow", RefersToR1C1:="=COUNTA(C" & ColNo & ")"
activeworkbook.Names.Add Name:="Titles", RefersTo:="=A2:INDEX($2:$200," & "eRow," & "eCol)"
End Sub
Sub DropDown1_Change()
MsgBox "Directed by " & Cells(2, 5)
End Sub
Uwaga: Wszystkie dane zostały umieszczone na jednej stronie, aby ułatwić przeglądanie. Zazwyczaj wartości w kolumnach A i B oraz D i E znajdują się na innym, być może ukrytym, arkuszu. Należy również pamiętać, że druga kolumna, B, nie jest używana w definicjach zakresu w tym konkretnym ćwiczeniu; wartości kolumny B są uzyskiwane w standardowy sposób za pomocą właściwości łącza komórki pola kombi (D2 odzwierciedla wybór trzeciego elementu w zakresie, który zaczyna się w A2, w połączeniu z funkcją indeksu w „E3” w celu znalezienia dyrektora ( =INDEX(B:B;D2+1;1)).
Zapisz skoroszyt, a następnie otwórz go ponownie. Pole kombi zostanie początkowo wypełnione przez Auto_open. Dodaj elementy do kolumn A i B i obserwuj zmiany w polu kombi.
Odzyskiwanie uszkodzonych plików Excel
Od czasu do czasu pliki programu Excel mogą ulec uszkodzeniu po nieoczekiwanej awarii programu Excel. Jeśli masz kopię zapasową, możesz po prostu przywrócić dane za pomocą kopii zapasowej. W przeciwnym razie może być konieczne poszukiwanie profesjonalnego eksperta lub narzędzia do odzyskania uszkodzony program Excel akta.
Wprowadzenie autora:
Felix Hooker jest ekspertem w dziedzinie odzyskiwania danych w DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym naprawa rar i oprogramowanie do odzyskiwania sql. po więcej informacji odwiedź www.datanumen.com


