VBA UBOUND

UBOUND o anche conosciuta come Upper Bound, questa funzione in VBA viene utilizzata con la sua funzione opposta che LBOUND o anche conosciuta come funzione Lower Bound, l'uso di questa funzione è per definire la lunghezza di un array in un codice e come suggerisce il nome UBOUND viene utilizzato per definire il limite superiore dell'array.

Funzione VBA UBOUND

Come si dice la lunghezza massima dell'array in Excel? Sì, possiamo vedere e aggiornare manualmente la lunghezza massima dell'array ma se stai facendo tutto questo mentre oggi è la fine perché abbiamo una funzione chiamata UBOUND per determinare la lunghezza massima dell'array. Segui questo articolo per avere più conoscenza della funzione UBOUND in Excel VBA.

UBOUND sta per Upper Bound. Spesso nella codifica potremmo richiedere di trovare la lunghezza massima dell'array. Ad esempio, MyResult (24) significa che il nome dell'array MyResult contiene 25 valori perché l'array inizia da zero, non da uno. Quindi 24 significa +1 cioè in totale 25 valori.

Qui la lunghezza massima dell'array è 24, invece di fornire manualmente la lunghezza dell'array possiamo usare la funzione incorporata UBOUND per ottenere la lunghezza massima dell'array.

Il codice è: UBOUND (MyResult)  ie UBOUND (24)

Quindi la funzione VBA UBOUND di Excel rappresenta il limite superiore della dimensione dell'array.

Come utilizzare la funzione VBA UBound in Excel?

La formula di VBA UBOUND è molto semplice perché ha solo due parametri.

UBound (Arrayname [, Dimension])
  • Nome array: questo è il nome del nome dell'array che abbiamo definito. Ad esempio, nell'esempio precedente, MyResult è il nome dell'array.
  • [Dimensione]: se l'array ha più di una dimensione, è necessario specificare la dimensione dell'array. Se ignori, tratterà la prima dimensione per impostazione predefinita.

La funzione Excel VBA UBOUND è molto utile per determinare la lunghezza dei loop durante l'esecuzione dei loop.

Esempi di funzione UBOUND in Excel VBA

Di seguito sono riportati gli esempi pratici della funzione VBA UBound.

Puoi scaricare questo modello di funzione UBound VBA qui - Modello di funzione UBound VBA

Esempio 1

Per iniziare il procedimento lasciatemi scrivere il semplice codice. Seguire i passaggi seguenti per applicare la funzione VBA UBOUND.

Passaggio 1: avvia la macro Excel e definisci il nome della variabile.

Codice:

 Sub Ubound_Example1 () Dim ArrayLength (da 0 a 4) As String 

Passaggio 2: assegnerò valori a questo nome di matrice.

Codice:

 Sub Ubound_Example1 () Dim ArrayLength (da 0 a 4) As String ArrayLength (0) = "Hi" ArrayLength (1) = "Friend" ArrayLength (2) = "Welcome" ArrayLength (3) = "to" ArrayLength (4) = Sottotitoli "Classe VBA" 

Passaggio 3: ora utilizzando una finestra di messaggio con la funzione UBOUND vedremo la lunghezza massima dell'array.

Codice:

 Sub Ubound_Example1 () Dim ArrayLength (da 0 a 4) As String ArrayLength (0) = "Hi" ArrayLength (1) = "Friend" ArrayLength (2) = "Welcome" ArrayLength (3) = "to" ArrayLength (4) = La lunghezza limite superiore "Classe VBA" MsgBox "è:" & UBound (ArrayLength) End Sub 

Passaggio 4: eseguire questo codice premendo il tasto F5 oppure è anche possibile eseguire il codice manualmente come mostrato nello screenshot qui sotto.

la finestra di messaggio ti mostrerà il numero del limite superiore dell'array verrà mostrato nella finestra di messaggio.

In questo modo utilizzando la funzione VBA UBOUND di Excel, possiamo ottenere la lunghezza del limite superiore di un array.

Esempio n. 2: utilizzo della funzione UBOUND VBA di Excel per copiare i dati

Supponi di avere un elenco di dati in un foglio Excel come quello sotto.

Questi dati verranno aggiornati quotidianamente e sarà necessario copiare questi dati nel nuovo foglio ogni volta che viene aggiornato. L'aggiornamento manuale richiederà una notevole quantità di tempo sul posto di lavoro, ma ti mostrerò un semplice codice macro per automatizzarlo.

Passaggio 1: creare una macro e definire la variabile dell'array.

Codice:

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

Passaggio 2: ora attiva il foglio dati facendo riferimento al suo nome.

Codice:

 Sub Ubound_Example2 () Dim DataRange () As Variant Sheets ("Data Sheet"). Attiva End Sub 

Passaggio 3: ora assegna l'intervallo di dati alla variabile definita utilizzando il codice seguente.

Codice:

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

Passaggio 4: ora aggiungi un nuovo foglio di lavoro alla cartella di lavoro.

Codice:

 Sub Ubound_Example2 () Dim DataRange () As Variant Sheets ("Data Sheet"). Activate DataRange = Range ("A2", Range ("A1"). End (xlDown) .End (xlToRight)) Worksheets.Add End Sub 

Passaggio 5: ora aggiungi i dati al foglio appena aggiunto utilizzando la funzione VBA UBOUND di Excel nella forma del codice seguente.

Codice:

 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 End Sub 

Il codice sopra sfalserà le celle della lunghezza massima restituita dalla funzione UBOUND e questo intervallo sarà uguale al valore del nome dell'array " DataRange "

Passaggio 6: ora esegui questo codice, incollerà il valore sul nuovo foglio.

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.