Excel VBA UBound-funktion
Hur ofta stöter du på en situation där du måste nämna maximal längd eller övre gräns för en matrisdata som arbetar med Excel? De flesta gånger, eller hur? Och hur hittar du samma sak? Kanske manuellt för det mesta. Du kan emellertid automatisera den och få maximal längd eller övre gräns för en matris med en VBA-funktion som heter UBound.
Dessutom har det det vackraste sättet att gå igenom. Som om du använder en For-loop i din matris, ville du definitivt slinga alla elementen i matrisen. I så fall skulle det vara ett tråkigt jobb att ta reda på övergränsen manuellt och nämna det i slingan. Det kommer också att minska kodens generalitet. Därför är VBA UBound-funktion praktiskt i sådana scenarier.
UBound står för övre gräns och det ger övre gräns eller maximal längd på matrisen i Excel VBA.
Formel för UBound-funktion i Excel VBA
Excel VBA UBound-funktion har följande syntax.
UBound (Arrayname (, dimension))
Var,
- Arrayname: Namn på den matris som du har definierat. Detta argument är ett obligatoriskt / obligatoriskt argument.
- Dimension: Valfritt argument som anger dimensionen på en matris. Oavsett om det är en endimensionell, tvådimensionell eller flerdimensionell matris. Som standard kommer den att anta endimensionell matris om den inte anges.
Eftersom denna funktion endast har två argument blir det mycket lättare att komma ihåg syntaxen för denna funktion.
Hur använder jag Excel VBA UBound-funktion?
Vi kommer att lära dig att använda en VBA UBound-funktion med några exempel i Excel.
Du kan ladda ner denna VBA UBound Excel-mall här - VBA UBound Excel-mallExempel 1 - VBA UBound med en-dimensionell array
Följ stegen nedan för att använda UBound-funktionen i VBA.
Steg 1: Klicka på Visual Basic på utvecklarfliken för att öppna VB-redigeraren.
Steg 2: Klicka på Infoga och välj fliken Modul för att lägga till en ny tom modul till VBE.
Steg 3: I VBE börjar du skriva makro och definiera variabelns namn.
Koda:
Sub Onedm_Ubound () Dim IndiaCity (4) Som String End Sub
Här definieras variabel IndiaCity med 5 element. Variabeltypen är en sträng.
Obs: Array startar från 0 (Noll). Följaktligen kommer denna grupp att bestå av fem element.Steg 4: Tilldela värden till arrayelementen.
Koda:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = "Mumbai" IndiaCity (1) = "Bengaluru" IndiaCity (2) = "Hyderabad" IndiaCity (3) = "Delhi" IndiaCity (4) = "Pune "Avsluta sub
Här har nollelementet ett värde tilldelat som "Mumbai", det första elementet har ett värde tilldelat som "Bengaluru" och så vidare.
Steg 5: Använd UBound-funktionen tillsammans med MsgBox för att få den övre gränsen för matrisen.
Koda:
Sub Onedm_Ubound () Dim IndiaCity (4) As String IndiaCity (0) = "Mumbai" IndiaCity (1) = "Bengaluru" IndiaCity (2) = "Hyderabad" IndiaCity (3) = "Delhi" IndiaCity (4) = "Pune "MsgBox" Upper Bound for Array är: "& UBound (IndiaCity) End Sub
Steg 6: Kör den här koden genom att slå F5 direkt eller slå manuellt på knappen Run på den övre vänstra panelen. En meddelanderuta dyker upp med meddelandet " Upper Bound for the Array is: 4 ".
Observera att UBound-funktionen inte hittar den övre gränsen från elementen i Array. Det hittar bara det maximala antalet element som matrisen har.
Exempel 2 - VBA UBound med tvådimensionell matris
Följ stegen nedan för att använda UBound-funktionen i VBA.
Steg 1: Definiera en variabel som kan innehålla tvådimensionell data.
Koda:
Sub TwoDm_UBound () Dim Array_Test (0 till 6, 1 till 8) Som String End Sub
Steg 2: Definiera en ny variabel Meddelande och använd den under MsgBox. Denna variabel hjälper oss att skriva ut de övre gränserna för båda dimensioner samtidigt.
Koda:
Sub TwoDm_UBound () Dim Array_Test (0 till 6, 1 till 8) Som String Dim Message MsgBox Message End Sub
Steg 3: Prova nu på följande påståenden som gör det möjligt för systemet att skriva ut båda dimensionerna i matrisen under samma meddelanderuta.
Koda:
Sub TwoDm_UBound () Dim Array_Test (0 till 6, 1 till 8) Som String Dim Message Message = "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 två uttalandena som nämns i koden ovan tillåter systemet att skriva ut båda dimensioner i samma meddelanderuta. Det första uttalet lagrar värdet på den övre gränsen för den första dimensionen i variabeln Meddelande och avslutar raden (vbCrLf). Det andra uttalet lägger till det första värdet som tilldelats variabeln Meddelande och kombinerar det med den övre gränsen för andra dimensioner med ett popup-meddelande.
Eftersom vbCrLf används i båda uttalanden, fungerar det som nylinje / vagnretur här i båda uttalandena.
Steg 4: Kör koden genom att slå F5 eller Run-knappen och se utgången.
På liknande linjer kan vi gå till flera dimensioner och se den övre gränsen för var och en av dem.
Exempel 3 - UBound-funktion för att automatiskt uppdatera data i arket
Anta att du har en datauppsättning som visas i skärmbilden nedan.
Dessa data uppdateras och du måste kopiera uppdaterade data då och då. Nu är det verkligen ett tråkigt jobb att alltid leta efter datauppdateringar och sedan kopiera det till det nya arket. Det tar mycket tid också. Kan vi försöka automatisera den med UBound-funktion i VBA? Låt oss se.
Följ stegen nedan för att uppdatera data i arket automatiskt med VBA UBound-funktion:
Steg 1: Definiera en variabel genom att skapa ett makro.
Koda:
Sub Ex3_UBound () Dim DataUpdate () Som Variant End Sub
Steg 2: Aktivera kalkylbladet som innehåller dina data. I det här fallet är namnet “ Data ”.
Koda:
Sub Ex3_UBound () Dim DataUpdate () Som varianter ("Data"). Aktivera End Sub
Steg 3: Tilldela intervallet till den variabel vi just skapade. Vi kommer att använda aktiva ark för detta ändamål.
Koda:
Sub Ex3_UBound () Dim DataUpdate () Som varianter ("Data"). Aktivera DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) End Sub
Steg 4: Lägg till ett nytt kalkylblad i Excel, där uppdaterade data kan kopieras och klistras in.
Koda:
Sub Ex3_UBound () Dim DataUpdate () Som Variant Sheets ("Data"). Aktivera DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Arbetsblad. Lägg till End Sub
Steg 5: Använd nu kodraden nedan som gör att data från "Data" -arket kan kopieras och klistras in automatiskt i ett nyskapat Excel-ark.
Koda:
Sub Ex3_UBound () Dim DataUpdate () Som Variant Sheets ("Data"). Aktivera DataUpdate = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Arbetsblad. Lägg till Range (ActiveCell, ActiveCell.Offset (UBound (DataUpdate, 1) - 1, UBound (DataUpdate, 2) - 1)) = DataUpdate End Sub
Ovanstående kod kommer att kompensera cellerna från "Data" -arket upp till övre gränsen, vilket kan erhållas med den använda UBound-funktionen och tilldelar intervallet till variabeln DataUpdate.
Steg 6: Kör koden genom att slå F5 eller Run-knappen och se utgången.
Som ni kan se finns det ett nytt ark i Excel-arbetsboken där alla data från "Data" -arket kopieras automatiskt.
Detta är en dynamisk kod. Vad jag menar att det är dynamiskt är, även om jag lägger till kolumnvis och radvis, kommer den automatiskt att kopieras till ett nytt ark.
Steg 7: Låt oss lägga till några rader och kolumner i data och se om det verkligen fungerar.
Steg 8: Tryck på knappen Kör igen efter att databladet har uppdaterats och se magin.
Om du kan se läggs ett nytt ark till (färgat) och en ny kolumn med ålder tillsammans med två nya rader läggs också till i det arket. Det betyder, oavsett vad vi uppdaterar i masterfilen (Data), kommer denna kod automatiskt att kopiera allt därifrån och klistra in det i ett nytt ark.
Saker att komma ihåg
- UBound ger den övre gränsen / maximala längden för en matris och inte den övre gränsen från de datapunkter som finns i en array.
- Arrayen startar alltid från det 0: e läget som parallellt med de flesta programmeringsspråk som C, C ++, Python.
- Om din matris är flerdimensionell måste du också ange dimensioneringsargumentet som tar numeriska hela värden som 1, 2, 3 osv. 1 står för One-Dimension, 2 for Two-Dimensional och så vidare.
Rekommenderade artiklar
Detta är en guide till VBA UBound-funktion. Här diskuterar vi hur du använder Excel VBA UBound-funktion tillsammans med några praktiska exempel och nedladdningsbar Excel-mall. Du kan också gå igenom våra andra föreslagna artiklar -
- VBA-delad funktion med exempel
- Excel storfunktion
- VBA-match
- CEILING-funktion i Excel
- Hur använder man VBA-kalkylblad?