Excel VBA UBound-funktion
Hvor ofte oplever du en situation, hvor du har brug for at nævne den maksimale længde eller øvre grænse for en matrixdata, der arbejder med Excel? De fleste af tidene, ikke? Og hvordan finder du det samme? Måske manuelt det meste af tiden. Du kan dog automatisere det og få den maksimale længde eller øvre grænse for en matrix ved hjælp af en VBA-funktion kaldet UBound.
Derudover har det den smukkeste måde at gå igennem. Hvis du bruger en For-loop i din matrix, ville du bestemt sløjfe alle elementerne i matrixen. I dette tilfælde ville det være et kedeligt job at finde ud af overgrænsen manuelt og nævne det i løkken. Det vil også reducere kodelighedens almindelighed. Derfor er VBA UBound-funktion praktisk i sådanne scenarier.
UBound står for øvre grænse, og det giver øvre grænse eller maksimal længde på matrixen i Excel VBA.
Formel til UBound-funktion i Excel VBA
Excel VBA UBound-funktion har følgende syntaks.
UBound (Arrayname (, dimension))
Hvor,
- Arrayname: Navn på den matrix, du har defineret. Dette argument er et obligatorisk / påkrævet argument.
- Dimension: Valgfrit argument, der specificerer dimensionen af en matrix. Uanset om det er en en-dimensionel, to-dimensionel eller flerdimensionel matrix. Som standard antager den den endimensionelle matrix, hvis den ikke er specificeret.
Da denne funktion kun har to argumenter, bliver det meget lettere at huske syntaks for denne funktion.
Sådan bruges Excel VBA UBound-funktion?
Vi lærer, hvordan man bruger en VBA UBound-funktion med få eksempler i Excel.
Du kan downloade denne VBA UBound Excel-skabelon her - VBA UBound Excel-skabelonEksempel 1 - VBA UBound med en-dimensionel array
Følg nedenstående trin for at bruge UBound-funktion i VBA.
Trin 1: I fanen Udvikler skal du klikke på Visual Basic for at åbne VB Editor.
Trin 2: Klik på Indsæt og vælg fanen Modul for at tilføje et nyt tomt modul til VBE.
Trin 3: I VBE skal du begynde at skrive makroen og definere variabelnavnet.
Kode:
Sub Onedm_Ubound () Dim IndiaCity (4) Som String End Sub
Her defineres variabel IndiaCity med 5 elementer. Variabeltypen er en streng.
Bemærk: Array starter fra 0 (Nul). Derfor vil denne matrix bestå af 5 elementer.Trin 4: Tildel værdier til matrixelementerne.
Kode:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = "Mumbai" IndiaCity (1) = "Bengaluru" IndiaCity (2) = "Hyderabad" IndiaCity (3) = "Delhi" IndiaCity (4) = "Pune "Afslut sub
Her har det nuleste element en værdi, der er tildelt som "Mumbai", det første element har en værdi, der er tildelt "Bengaluru" og så videre.
Trin 5: Brug UBound-funktionen sammen med MsgBox for at få den øvre grænse for matrixen.
Kode:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = "Mumbai" IndiaCity (1) = "Bengaluru" IndiaCity (2) = "Hyderabad" IndiaCity (3) = "Delhi" IndiaCity (4) = "Pune "MsgBox" øvre grænse for matrixen er: "& UBound (IndiaCity) End Sub
Trin 6: Kør denne kode ved at slå F5 direkte eller manuelt slå Run-knappen i øverste venstre panel. Der vises en meddelelsesboks med meddelelsen " Øvre grænse for arrayen er: 4 ".
Bemærk, at UBound-funktion ikke finder ud af den øvre grænse fra elementerne i Array. Det finder bare ud det maksimale antal elementer, som matrixen rummer.
Eksempel 2 - VBA UBound med to-dimensionel array
Følg nedenstående trin for at bruge UBound-funktion i VBA.
Trin 1: Definer en variabel, der kan indeholde to-dimensionelle data.
Kode:
Sub TwoDm_UBound () Dim Array_Test (0 til 6, 1 til 8) Som streng slutningssub
Trin 2: Definer en ny variabel Meddelelse og brug den under MsgBox. Denne variabel vil hjælpe os med at udskrive de øvre grænser for begge dimensioner samtidig.
Kode:
Sub TwoDm_UBound () Dim Array_Test (0 til 6, 1 til 8) Som streng dim-meddelelse MsgBox Meddelelse slut sub
Trin 3: Prøv nu de følgende udsagn, der giver systemet mulighed for at udskrive begge dimensioner af arrayen under den samme meddelelsesboks.
Kode:
Sub TwoDm_UBound () Dim Array_Test (0 til 6, 1 til 8) Som streng Dim Message Meddelelse = "Upper bound for first dimension is:" & UBound (Array_Test, 1) & vbCrLf Message = Message & "Upper bound for second dimension is : "& UBound (Array_Test, 2) & vbCrLf MsgBox Message End Sub
De to udsagn, der er nævnt i ovenstående kode, giver systemet mulighed for at udskrive begge dimensioner i den samme meddelelsesboks. Den første sætning gemmer værdien af den øvre grænse for den første dimension i variablen Message og afslutter linjen (vbCrLf). Den anden sætning tilføjer den første værdi, der er tildelt variabel meddelelse, og den kombineres med den øvre grænse af andre dimensioner med en pop-up-meddelelse.
Da vbCrLf bruges i begge udsagn, fungerer det som newline / vognretur her i begge udsagn.
Trin 4: Kør koden ved at trykke på F5 eller Run-knappen og se output.
På lignende linjer kan vi gå indtil flere dimensioner og se den øvre grænse for hver af dem.
Eksempel # 3 - UBound-funktion til automatisk at opdatere data i arket
Antag, at du har et datasæt, som vist i nedenstående skærmbillede.
Disse data bliver opdateret, og du skal kopiere de opdaterede data nu og da. Nu er det virkelig et kedeligt job at altid tjekke for dataopdateringerne og derefter kopiere det til det nye ark. Det bruger også meget tid. Kan vi prøve at automatisere det ved hjælp af UBound-funktion i VBA? Lad os se.
Følg nedenstående trin for at opdatere dataene i arket automatisk ved hjælp af VBA UBound-funktion:
Trin 1: Definer en variabel ved at oprette en makro.
Kode:
Sub Ex3_UBound () Dim DataUpdate () Som Variant End Sub
Trin 2: Aktivér det regneark, der indeholder dine data. I dette tilfælde er arknavnet " Data ".
Kode:
Sub Ex3_UBound () Dim DataUpdate () Som varianter ("Data"). Aktivér slut Sub
Trin 3: Tildel området til den variabel, vi lige har oprettet. Vi bruger området aktiverede ark til dette formål.
Kode:
Sub Ex3_UBound () Dim DataUpdate () Som variantark ("Data"). Aktiver DataUpdate = Range ("A2", Range ("A1"). End (xlDown). End (xlToRight)) End Sub
Trin 4: Føj et nyt regneark til din Excel, hvor de opdaterede data kan kopieres og indsættes.
Kode:
Sub Ex3_UBound () Dim DataUpdate () Som variantark ("Data"). Aktiver DataUpdate = Range ("A2", Range ("A1"). End (xlDown). End (xlToRight)) Arbejdsark. Tilføj slut
Trin 5: Brug nu kodelinjen nedenfor, der tillader, at dataene fra “Data” -arket kopieres og indsættes automatisk i et nyoprettet excelark.
Kode:
Sub Ex3_UBound () Dim DataUpdate () Som variantark ("Data"). Aktiver DataUpdate = Range ("A2", Range ("A1"). End (xlDown). End (xlToRight)) Arbejdsark. Tilføj område (ActiveCell, ActiveCell.Offset (UBound (DataUpdate, 1) - 1, UBound (DataUpdate, 2) - 1)) = DataUpdate End Sub
Ovenstående kode kompenserer cellerne fra "Data" -ark op til øvre grænse, som kan opnås ved brug af UBound-funktion og tildeler området til variablen DataUpdate.
Trin 6: Kør koden ved at trykke på F5 eller Run-knappen og se output.
Som du kan se, er der tilføjet et nyt ark i Excel-projektmappen, hvor alle data fra “Data” -arket kopieres automatisk.
Dette er en dynamisk kode. Hvad jeg mener at sige det dynamisk er, selvom jeg tilføjer kolonnevis og rækkevis, kopieres det automatisk til et nyt ark.
Trin 7: Lad os tilføje nogle rækker og kolonner til dataene og se, om de rent faktisk fungerer.
Trin 8: Tryk på knappen Kør igen, når databladet er opdateret og se magien.
Hvis du kan se, tilføjes et nyt ark (farvet) og en ny kolonne med alder sammen med to nye rækker tilføjes også i det ark. Det betyder, uanset hvad vi opdaterer i masterfilen (Data), vil denne kode automatisk kopiere alt derfra og indsætte det i et nyt ark.
Ting at huske
- UBound giver den øvre grænse / maksimale længde af en matrix og ikke den øvre grænse fra de datapunkter, der er til stede i en matrix.
- Arrayet starter altid fra den 0. position som parallel med de fleste programmeringssprog som C, C ++, Python.
- Hvis din matrix er multidimensionel, skal du også specificere dimensionens argument, som tager numeriske hele værdier som 1, 2, 3 osv. 1 står for One-Dimension, 2 for Two-Dimensional og så videre.
Anbefalede artikler
Dette er en guide til VBA UBound-funktion. Her diskuterer vi, hvordan du bruger Excel VBA UBound-funktion sammen med nogle praktiske eksempler og downloadbar excel-skabelon. Du kan også gennemgå vores andre foreslåede artikler -
- VBA-splitfunktion med eksempler
- Excel store bogstavsfunktion
- VBA-kamp
- CEILING-funktion i Excel
- Sådan bruges VBA-regneark?