Kadar podatki, preneseni iz baze podatkov, presegajo obseg kombiniranega polja, novi elementi preprosto niso prikazani. Če želite to preprečiti, je treba obseg, ki je podlaga za polja s seznami ali kombinirano, razširiti ali skrčiti, da se ujema s podatki. Ta članek preučuje, kako to storiti samodejno.
Predpostavlja se, da ima bralec prikazan trak za razvijalce in da pozna urejevalnik VBA. V nasprotnem primeru prosimo za Google »Excel Developer Tab« ali »Excel Code Window«.
Profesionalen način prikazovanja kombiniranih polj je, da se njihovi razponi po potrebi širijo ali krčijo. Na primer:
Ključ do dinamičnega obsega je spremljanje števila naseljenih vrstic v ustreznem stolpcu s pomočjo funkcije = countA. Ta funkcija šteje naseljene elemente v zaporedju celic, dokler ne zadene zadnje; v primeru prvega diagrama na zgornji sliki bi bila to vrstica 11.
Če želite ohraniti obseg, samodejno potrebujete definirana imena za sledenje številu napolnjenih vrstic. Za določitev meja našega obsega na primer uporabljamo eCol (končni stolpec) in eRow (končna vrstica). Več kot vrstic vstavimo, večja bo vrednost eRow.
Zgornja definirana imena so seznam nastavila na en stolpec (eCol = 1) s številom zapolnjenih vrstic v eCol (eRow = 11)
Na koncu se naslovi pojavijo v območju »A2: A« in eRow. Opazili boste, da se funkcija indeksa uporablja za določitev zadnje celice v obsegu, imenovanem "Naslovi". Obseg "A2: A" & eRow se na tej stopnji dejansko prevede v "A2: A11".
Dinamični razpon lahko samodejno nastavimo, ko se delovni zvezek odpre, s pomočjo podprocedura Auto_open, ki se zažene, preden delovni zvezek postane viden.
Kodeks
Odprite delovni zvezek in ga zapolnite s kombiniranim poljem in nekaj podatki. Najdete vzorec delovnega zvezka, uporabljenega pri tej vaji tukaj.
Odprite okno kode VBA in vstavite modul. Kopirajte spodnjo kodo v modul.
Dogodek Auto_Open nastavi vrednosti zadnje vrstice in zadnjega stolpca za dinamični razpon »Naslovi« in zabeleži nadaljnje spremembe.
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
Opomba: Zaradi lažjega pregleda je vse postavljeno na eno stran. Običajno so vrednosti v stolpcih A in B ter D in E na drugem, morda skritem listu. Upoštevajte tudi, da se drugi stolpec, B, v tej vaji ne uporablja v definicijah obsega; vrednosti stolpca B so pridobljene na običajen način prek lastnosti povezave celice v kombiniranem polju (D2 odraža izbiro tretjega elementa v obsegu, ki se začne pri A2, skupaj s funkcijo Index v »E3« za iskanje direktorja ( =INDEX(B:B,D2+1,1)).
Shranite delovni zvezek in ga znova odprite. Kombinirano polje bo sprva zapolnilo Auto_open. V stolpca A in B dodajte elemente in opazujte spremembe v kombiniranem polju.
Poškodovane datoteke Excel
Občasno se lahko datoteke Excel po nepričakovanih zrušitvah poškodujejo. Če imate varnostno kopijo, lahko podatke preprosto obnovite s svojo varnostno kopijo. V nasprotnem primeru boste morda morali poiskati strokovnjaka ali orodje za obnovitev pokvarjen Excel datotek.
Uvod avtorja:
Felix Hooker je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z popravilo rar-ja in sql programske izdelke za obnovitev. Za več informacij obiščite www.datanumen.com


