VBA UBOUND

UBOUND eller även känd som Upper Bound, denna funktion i VBA används med sin motsatta funktion som LBOUND eller även känd som Lower Bound-funktion, användningen av denna funktion är att definiera längden på en matris i en kod och som namnet antyder UBOUND används för att definiera matrisens övre gräns.

VBA UBOUND-funktion

Hur anger du den maximala längden på matrisen i Excel? Ja, vi kan manuellt se och uppdatera den maximala längden på matrisen men om du gör allt detta medan det idag är slutet på det eftersom vi har en funktion som heter UBOUND för att bestämma matrisens maximala längd. Följ den här artikeln för att få mer kunskap om UBOUND-funktionen i Excel VBA.

UBOUND står för Upper Bound. Ofta vid kodning kan vi behöva hitta arrayens maximala längd. Exempelvis MyResult (24) organ array namn MyResult rymmer 25 värden till det eftersom array startar från noll, inte från en. Så 24 betyder +1 dvs totalt 25 värden.

Här är arrayens maximala längd 24, istället för att tillhandahålla arraylängden manuellt kan vi använda den inbyggda funktionen UBOUND för att få den maximala längden på arrayen.

Koden är: UBOUND (MyResult)  dvs. UBOUND (24)

Så Excel VBA UBOUND-funktionen representerar den övre gränsen för matrisstorlek.

Hur använder jag VBA UBound-funktionen i Excel?

Formeln för VBA UBOUND är väldigt enkel eftersom den bara har två parametrar.

UBound (Arrayname [, Dimension])
  • Array Name: Detta är namnet på arraynamnet vi har definierat. Till exempel, i ovanstående exempel är MyResult arraynamnet .
  • [Dimension]: Om matrisen har mer än en dimension måste vi ange dimensionen för matrisen. Om du ignorerar kommer den första dimensionen att behandlas som standard.

Excel VBA UBOUND-funktionen är mycket användbar för att bestämma slingornas längd medan du kör slingorna.

Exempel på UBOUND-funktion i Excel VBA

Nedan följer de praktiska exemplen på VBA UBound-funktionen.

Du kan ladda ner den här VBA UBound-funktionsmallen här - VBA UBound-funktionsmallen

Exempel nr 1

Låt mig skriva den enkla koden för att inleda förfarandet. Följ stegen nedan för att tillämpa VBA UBOUND-funktionen.

Steg 1: Starta excel-makrot och definiera variabelnamnet.

Koda:

 Sub Ubound_Example1 () Dim ArrayLength (0 To 4) As String 

Steg 2: Jag tilldelar värden till det här arraynamnet.

Koda:

 Sub Ubound_Example1 () Dim ArrayLength (0 To 4) As String ArrayLength (0) = "Hi" ArrayLength (1) = "Friend" ArrayLength (2) = "Welcome" ArrayLength (3) = "to" ArrayLength (4) = "VBA Class" End Sub 

Steg 3: Nu använder vi en meddelanderuta med UBOUND-funktion ser vi den maximala längden på matrisen.

Koda:

 Sub Ubound_Example1 () Dim ArrayLength (0 To 4) As String ArrayLength (0) = "Hi" ArrayLength (1) = "Friend" ArrayLength (2) = "Welcome" ArrayLength (3) = "to" ArrayLength (4) = "VBA Class" MsgBox "Upper Bound Length är:" & UBound (ArrayLength) End Sub 

Steg 4: Kör den här koden genom att trycka på F5-tangenten eller så kan du också köra koden manuellt enligt bilden nedan.

Meddelandefältet visar att det övre gränsnumret för matrisen kommer att visas i meddelandefältet.

Gilla detta med hjälp av Excel VBA UBOUND-funktionen kan vi få den övre gränsen för en matris.

Exempel # 2 - Använda Excel VBA UBOUND-funktionen för att kopiera data

Antag att du har en lista med data i ett excelblad som det nedanstående.

Dessa data kommer att uppdateras dagligen och du måste kopiera dessa data till det nya arket varje gång de uppdateras. Att uppdatera detta manuellt kommer att ta mycket tid på din arbetsplats men jag visar dig enkel makrokod för att automatisera detta.

Steg 1: Skapa ett makro och definiera matrisvariabeln.

Koda:

 Sub Ubound_Example2 () Dim DataRange () Som Variant End Sub 

Steg 2: Aktivera nu databladet genom att hänvisa till dess namn.

Koda:

 Sub Ubound_Example2 () Dim DataRange () Som Variant Sheets ("Data Sheet"). Aktivera End Sub 

Steg 3: Tilldela nu dataområdet till den definierade variabeln med hjälp av nedanstående kod.

Koda:

 Sub Ubound_Example2 () Dim DataRange () Som Variant Sheets ("Data Sheet"). Aktivera DataRange = Range ("A2", Range ("A1"). End (xlDown). End (xlToRight)) End Sub 

Steg 4: Lägg nu till ett nytt kalkylblad i arbetsboken.

Koda:

 Sub Ubound_Example2 () Dim DataRange () Som Variant Sheets ("Data Sheet"). Aktivera DataRange = Range ("A2", Range ("A1"). End (xlDown). End (xlToRight)) Kalkylblad. Lägg till End Sub 

Steg 5: Lägg nu till data till det nyligen tillagda arket med hjälp av Excel VBA UBOUND-funktionen i form av nedanstående kod.

Koda:

 Sub Ubound_Example2 () Dim DataRange () Som Variant Sheets ("Data Sheet"). Aktivera DataRange = Range ("A2", Range ("A1"). End (xlDown). End (xlToRight)) Arbetsblad. Lägg till Range (ActiveCell , ActiveCell.Offset (UBound (DataRange, 1) - 1, UBound (DataRange, 2) - 1)) = DataRange End Sub 

Ovanstående kod kommer att kompensera cellerna med den maximala längden som returneras av UBOUND-funktionen och detta intervall kommer att vara lika med värdet för arraynamnetDataRange

Steg 6: Kör nu den här koden, den klistrar in värdet i det nya arket.

This code is a dynamic one because even when the data increases horizontally and vertically it will automatically take the range. Now I will add some dummy lines to the data.

Now I will once again run this code, it will now add the newly added lines as well.

Code:

 Sub Ubound_Example2()     Dim DataRange() As Variant Sheets("Data Sheet").Activate DataRange = Range("A2", Range("A1").End(xlDown).End(xlToRight)) Worksheets.Add Range(ActiveCell, ActiveCell.Offset( UBound ( DataRange, 1 ) - 1, UBound ( DataRange, 2 ) - 1)) = DataRange Erase DataRange End Sub 

Things to Remember

  • UBOUND returns the maximum length of the array.
  • The array starts from 0, not from 1.
  • If you want the lower value of the array then you need to use VBA LBOUND.
  • If the array has more than one dimension then you need to specify the dimension number as well.