Vba-tabel: basis- tot geavanceerde handleiding
Belangrijkste punten
- Beschouw een tabel binnen een VBA-tabel als een minidatabase voor het opslaan en ordenen van gegevens (bijvoorbeeld: naam van de student, onderwerp en scores).
- Voordat u het gebruikt, moet u een array declareren; met het gegevenstype en het aantal waarden dat u erin wilt opslaan.
Als u met VBA met big data wilt werken, moet u tabellen begrijpen en weten hoe u deze in VBA-codes kunt gebruiken. In deze handleiding verken je alle aspecten van de tabel en zien we ook enkele voorbeelden die je kunt gebruiken. hen.
Wat is een tabel in VBA?
In VBA is een array een variabele die meerdere waarden kan opslaan . U hebt in één keer toegang tot alle waarden in deze array, maar u kunt ook toegang krijgen tot een enkele waarde door het indexnummer op te geven, wat de positie van die waarde in de array is. Stel je voor dat je een afspraak hebt met de naam, het vak en de cijfers van de student.
Je kunt al deze informatie in een tabel opslaan, niet alleen voor één leerling, maar voor honderden. Hier is een eenvoudig voorbeeld om een tabel uit te leggen.
In het bovenstaande voorbeeld heb je een array van tien elementen (arraygrootte) en elk element heeft een specifieke positie (index).
Als u dus een element wilt gebruiken dat op de achtste positie staat, moet u naar dat element verwijzen met behulp van het indexnummer.
De array die we in het bovenstaande voorbeeld hebben gebruikt, is een eendimensionale array. Maar verderop in deze handleiding zullen we ook leren over multidimensionale arrays.
Hoe een array in VBA te declareren
Zoals ik hierboven al zei, is een array het type variabele, dus je moet deze declareren met behulp van de trefwoorden (Dim, Private, Public en Static). In tegenstelling tot een normale variabele moet u bij het declareren van een array een paar haakjes achter de arraynaam gebruiken.
Stel dat u een array wilt declareren die we in het bovenstaande voorbeeld hebben gebruikt.
Stappen voor het declareren van een array.
- Gebruik eerst het trefwoord “Dim”, voer de tabelnaam in en typ haakjes.
- Vervolgens moet u het gegevenstype voor de array opgeven. Als u geen gegevenstype hebt opgegeven, wijst VBA het juiste gegevenstype toe.
- Daarna moet u het aantal elementen definiëren dat u in de array wilt opslaan.
- Om een waarde aan een element in een array toe te wijzen, moet u uiteindelijk het indexnummer van het element gebruiken om het te identificeren en er vervolgens een waarde aan toewijzen.
Volledige code
Sub vba_array_example() Dim StudentsNames(10) As String StudentsNames(0) = "Waylon" StudentsNames(1) = "Morton" StudentsNames(2) = "Rudolph" StudentsNames(3) = "Georgene" StudentsNames(4) = "Billi" StudentsNames(5) = "Enid" StudentsNames(6) = "Genevieve" StudentsNames(7) = "Judi" StudentsNames(8) = "Madaline" StudentsNames(9) = "Elton" End Sub
Snelle notities
- In de bovenstaande code heb je eerst de Dim-instructie die de eendimensionale array definieert die maximaal 10 elementen kan opslaan en een stringgegevenstype heeft.
- Daarna heb je 10 regels code die de elementen van een array van 0 tot 9 definiëren.
Tabel met variërend gegevenstype
Wanneer u bij het declareren van een array het gegevenstype niet opgeeft, gebruikt VBA automatisch het variërende gegevenstype, wat resulteert in een lichte toename van het geheugengebruik, en deze toename van het geheugengebruik kan de codeprestaties vertragen.
Het is dus het beste om een specifiek gegevenstype te definiëren wanneer u een array declareert, tenzij het nodig is om het variantgegevenstype te gebruiken.
Informatie retourneren uit een array
Zoals ik eerder al zei, kun je, om informatie uit een array te halen, het indexnummer van het element gebruiken om de positie ervan te specificeren. Als u bijvoorbeeld het 8e element wilt retourneren van het gebied dat we in het vorige voorbeeld hebben gemaakt, zou de code er als volgt uitzien:
In de bovenstaande code hebt u de waarde in cel A1 ingevoerd met behulp van array-element 8.
Gebruik optiebasis 1
Ik weet zeker dat je deze vraag nu in je hoofd hebt, waarom we onze lijst met items vanaf nul zijn begonnen in plaats van met één?
Nou, dat is geen vergissing.
Toen programmeertalen voor het eerst werden geconstrueerd , maakte enige onzorgvuldigheid deze structuur tot een lijst met elementen in een array. In de meeste programmeertalen vindt u dezelfde structuur van lijstitems.
In tegenstelling tot de meeste andere computertalen kunt u in VBA echter de manier waarop de index werkt normaliseren, wat betekent dat u deze kunt laten beginnen met 1. Het enige dat u hoeft te doen is een verklaring toevoegen op basis van opties aan het begin van de module voordat u een verklaring declareert. array.array.
Nu zal deze tabel er ongeveer als volgt uitzien:
Zoeken in een tabel
Wanneer u waarden in een array opslaat, kunnen er momenten zijn waarop u een array-lookup moet uitvoeren.
In dit geval moet u weten welke methoden u kunt gebruiken. Bekijk nu de onderstaande code die u kan helpen begrijpen hoe u naar een waarde in een array kunt zoeken.
Sub vba_array_search() 'this section declares an array and variables _ that you need to search within the array. Dim myArray(10) As Integer Dim i As Integer Dim varUserNumber As Variant Dim strMsg As String 'This part of the code adds 10 random numbers to _ the array and shows the result in the _ immediate window as well. For i = 1 To 10 myArray(i) = Int(Rnd * 10) Debug.Print myArray(i) Next i 'it is an input box that asks you the number that you want to find. Loopback: varUserNumber = InputBox _ ("Enter a number between 1 and 10 to search for:", _ "Linear Search Demonstrator") 'it's an IF statement that checks for the value that you _ have entered in the input box. If varUserNumber = "" Then End If Not IsNumeric(varUserNumber) Then GoTo Loopback If varUserNumber < 1 Or varUserNumber > 10 Then GoTo Loopback 'message to show if the value doesn't found. strMsg = "Your value, " & varUserNumber & _ ", was not found in the array." 'loop through the array and match each value with the _ the value you have entered in the input box. For i = 1 To UBound(myArray) If myArray(i) = varUserNumber Then strMsg = "Your value, " & varUserNumber & _ ", was found at position " & i & " in the array." Exit For End If Next i 'message box in the end MsgBox strMsg, vbOKOnly + vbInformation, "Linear Search Result" End Sub
- In het eerste deel van de code heb je variabelen die je later in de code moet gebruiken.
- Daarna is het volgende deel het genereren van willekeurige getallen met behulp van RND om 10 waarden voor de array te krijgen.
- Vervolgens een invoervak waarin u de waarde kunt invoeren waarnaar u in de tabel wilt zoeken.
- In dit deel vindt u een code voor de string die u in het berichtvenster kunt gebruiken als de door u ingevoerde waarde niet wordt gevonden.
- Dit deel van de code gebruikt een lus om elk element van de array te doorlopen en te controleren of de door u ingevoerde waarde in de array voorkomt of niet.
- Het laatste deel van de code geeft een bericht weer dat aangeeft of een waarde is gevonden of niet.