LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vorresti leggere La campana
Niente spam

Potrebbe verificarsi una situazione in cui è necessario eseguire più volte un blocco di codice. In generale, le istruzioni vengono eseguite in sequenza: la prima istruzione nella funzione viene eseguita per prima, poi la seconda e così via.

I linguaggi di programmazione forniscono varie strutture di controllo che forniscono percorsi di esecuzione più complessi.

L'istruzione loop ci consente di eseguire un'istruzione o un gruppo di istruzioni più volte. Di seguito è riportata la vista generale dell'istruzione loop in VBA.

VBA fornisce i seguenti tipi di loop per gestire i requisiti di loop. Fare clic sui seguenti collegamenti per verificarne i dettagli.

per ciclo

Il ciclo for è una struttura di controllo della ripetizione che consente a uno sviluppatore di scrivere in modo efficiente un ciclo che deve essere eseguito un certo numero di volte.

Sintassi

Di seguito è riportata la sintassi per un ciclo for in VBA.

Per contatore = dall'inizio alla fine .... .... Avanti

Diagramma di flusso

Di seguito è riportato il flusso di controllo in modalità Loop -

  • Il primo passo è in corso. Questo passaggio consente di inizializzare qualsiasi variabile di controllo del ciclo e di incrementare la variabile del contatore di passi.
  • In secondo luogo, la condizione viene valutata. Se true, viene eseguito il corpo del ciclo. Se è false, il corpo del ciclo non viene eseguito e il flusso di controllo continua all'istruzione successiva immediatamente dopo il ciclo For.
  • Dopo l'esecuzione del ciclo for, il flusso di controllo passa all'istruzione successiva. Questa istruzione consente di aggiornare qualsiasi variabile di controllo del ciclo. Viene aggiornato in base al valore del contapassi.
  • La condizione viene ora valutata di nuovo. Se questo è vero, il ciclo viene eseguito e il processo viene ripetuto (il corpo del ciclo, quindi il passaggio viene incrementato e quindi la condizione di nuovo). Dopo che la condizione diventa falsa, il ciclo For termina.

esempio

Aggiungi un pulsante e aggiungi la seguente funzione.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 MsgBox "Il valore è i è: " & i Next End Sub

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato.

Il valore è i è: 0
Il valore è i è: 2
Il valore è i è: 4
Il valore è i è: 6
Il valore è i è: 8
Il valore è i è: 10

Esegue più volte una sequenza di istruzioni e riduce il codice che controlla la variabile di ciclo.

per... ciclo

Per ogni ciclo viene utilizzato per eseguire un'istruzione o un gruppo di istruzioni su ciascun elemento in un array o in una raccolta.

Per ogni ciclo è simile a For Loop; tuttavia, il ciclo viene eseguito per ogni elemento nell'array o nel gruppo. Pertanto, il contapassi non esisterà in questo tipo di ciclo. Viene utilizzato principalmente con gli array o utilizzato nel contesto di oggetti del file system per funzionare in modo ricorsivo.

Sintassi

Di seguito è riportata la sintassi di un ciclo For Each in VBA.

Per ogni elemento nel gruppo .... Avanti

esempio

Private Sub Constant_demo_Click() "fruits is an array fruits = Array("apple", "orange", "cherries") Dim fruitnames As Variant "iterazione usando Per ogni ciclo. Per ogni articolo In frutti nomifrutta = nomifrutta & Articolo & Chr(10) Next MsgBox nomifrutta End Sub

Quando il codice sopra viene eseguito, stampa tutti i nomi di frutta con un elemento per riga.

mela
arancia
ciliegia

Questo viene eseguito se c'è almeno un elemento nel gruppo e viene ripetuto per ogni elemento nel gruppo.

mentre..andare in loop

In un ciclo While While... Wend, se la condizione è True, tutte le istruzioni vengono eseguite finché non viene rilevata la parola chiave Wend.

Se la condizione è falsa, il ciclo termina e il controllo passa all'istruzione successiva dopo la parola chiave Wend.

Sintassi

Di seguito è riportata la sintassi del ciclo While..Wend in VBA.

Mentre le condizioni ... Wend

Diagramma di flusso

esempio

Private Sub Constant_demo_Click() Dim Counter: Counter = 10 While Counter< 15 " Test value of Counter. Counter = Counter + 1 " Increment Counter. msgbox "The Current Value of the Counter is: " & Counter Wend " While loop exits if Counter Value becomes 15. End Sub

Quando il codice precedente viene eseguito, verrà visualizzato quanto segue nel campo del messaggio.

Il valore attuale del contatore è: 11
Il valore attuale del contatore è: 12
Il valore attuale del contatore è: 13
Il valore attuale del contatore è: 14
Il valore attuale del contatore è: 15

Questo controlla la condizione prima di eseguire il corpo del ciclo.

fare..mentre loop

Il ciclo do...while viene utilizzato quando si desidera ripetere un insieme di istruzioni mentre una condizione è vera. La condizione può essere verificata all'inizio del ciclo o alla fine del ciclo.

Sintassi

Di seguito è riportata la sintassi del ciclo Do...While in VBA.

Condizione Do While ... ... Ciclo

Diagramma di flusso

esempio

L'esempio seguente usa un ciclo Do ... while per controllare lo stato all'inizio del ciclo. Le istruzioni all'interno del ciclo vengono eseguite solo se la condizione diventa True.

Private Sub Constant_demo_Click() Do While i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

Il valore di i è: 1
Il valore di i è: 2
Il valore di i è: 3
Il valore di i è: 4
Il valore di i è: 5

Sintassi alternativa

C'è anche una sintassi alternativa per Do ... while loop che controlla lo stato alla fine del ciclo. La principale differenza tra queste due sintassi è spiegata nell'esempio seguente.

Do ... ... Ciclo durante la condizione

esempio

L'esempio seguente usa un ciclo Do... while per controllare lo stato alla fine del ciclo. Le istruzioni all'interno del ciclo vengono eseguite almeno una volta, anche se la condizione è False.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "Il valore di i è: " & i Loop While i< 3 "Condition is false.Hence loop is executed once. End Sub

Quando il codice precedente viene eseguito, stampa il seguente output in una finestra di messaggio.

Il valore di i è: 11

Le istruzioni do..While verranno eseguite fintanto che la condizione è True. (cioè) Il ciclo deve essere ripetuto finché la condizione non è False.

do..intil loop

Do ... intil loop non verrà utilizzato quando vogliamo ripetere un insieme di istruzioni mentre la condizione è falsa. La condizione può essere verificata all'inizio del ciclo o alla fine del ciclo.

Sintassi

Di seguito è riportata la sintassi del ciclo Do..Until in VBA.

Condizione Do Until ... ... Ciclo

Diagramma di flusso

esempio

L'esempio seguente usa Do... Before Loop per testare una condizione all'inizio del ciclo. Le istruzioni all'interno del ciclo vengono eseguite solo se la condizione è falsa. Esce dal ciclo quando la condizione diventa vera.

Private Sub Constant_demo_Click() i = 10 Do Until i>15 "La condizione è falsa. Quindi il loop verrà eseguito i = i + 1 msgbox ("Il valore di i è: " & i) Loop End Sub

Quando il codice precedente viene eseguito, stampa il seguente output in una finestra di messaggio.

Il valore di i è: 11
Il valore di i è: 12
Il valore di i è: 13
Il valore di i è: 14
Il valore di i è: 15
Il valore di i è: 16

Sintassi alternativa

Esiste anche una sintassi alternativa Do... Before Loop che verifica la condizione alla fine del ciclo. La principale differenza tra queste due sintassi è spiegata dal seguente esempio.

Do ... ... Ciclo fino alla condizione

Diagramma di flusso

esempio

L'esempio seguente usa Do... Before Loop per verificare la presenza di una condizione alla fine del ciclo. Le istruzioni all'interno del ciclo vengono eseguite almeno una volta, anche se la condizione è True.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "The value of i is: " & i Loop Until i more15 "Condition is True. Quindi il loop viene eseguito una volta. End Sub

Quando il codice precedente viene eseguito, stampa il seguente output in una finestra di messaggio.

Il valore di i è: 11

do..Until le istruzioni verranno eseguite fintanto che la condizione è False. (cioè) Il ciclo deve essere ripetuto finché la condizione non è vera.

Record di controllo del ciclo

Le istruzioni di controllo del ciclo modificano l'esecuzione rispetto alla sequenza normale. Quando l'esecuzione esce dall'ambito, tutte le altre istruzioni di ciclo non vengono eseguite.

Dichiarazione e descrizione di controllo

Uscita operatore

L'uscita per viene utilizzata quando vogliamo uscire da un ciclo For in base a determinati criteri. Quando Exit For viene eseguito, il controllo passa all'istruzione successiva immediatamente dopo il ciclo For.

Sintassi

Di seguito è riportata la sintassi di Exit For Statement in VBA.

Diagramma di flusso

esempio

L'esempio seguente usa Exit For . Se il conteggio raggiunge 4, il ciclo For termina e il controllo passa all'istruzione successiva immediatamente dopo il ciclo For.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 "i è la variabile contatore ed è incrementata di 2 MsgBox ("Il valore è i è: " & i) Se i = 4 Allora i = i * 10 "Questo viene eseguito solo se i=4 MsgBox ("Il valore è i è: " & i) Exit For "Esce quando i=4 End If Next End Sub

Quando il codice precedente viene eseguito, stampa il seguente output nella finestra di messaggio.

Il valore è i è: 0
Il valore è i è: 2
Il valore è i è: 4
Il valore è i è: 40

Termina l'istruzione del ciclo For e trasferisce l'esecuzione all'istruzione immediatamente dopo il ciclo

Esci Fai

L'istruzione Exit Do viene utilizzata quando si desidera uscire da Do Loops in base a determinati criteri. Può essere utilizzato in entrambi i loop Do Do... While e Do... Before.

Quando viene eseguito un Exit Do, il controllo passa all'istruzione successiva immediatamente dopo il ciclo Do.

Sintassi

Di seguito è riportata la sintassi dell'istruzione Exit Do in VBA.

esempio

L'esempio seguente usa Exit Do . Se il contatore raggiunge 10, la riga di output Do termina e il controllo passa all'istruzione successiva immediatamente dopo il ciclo For.

Sub privato Constant_demo_Click() i = 0 Do While i<= 100 If i >10 Then Exit Do " Loop Esce se i>10 End If MsgBox ("Il valore di i è: " & i) i = i + 2 Loop End Sub

Quando il codice precedente viene eseguito, stampa il seguente output in una finestra di messaggio.

Il valore di i è: 0
Il valore di i è: 2
Il valore di i è: 4
Il valore di i è: 6
Il valore di i è: 8
Il valore di i è: 10

Termina un'istruzione Do While e trasferisce l'esecuzione all'istruzione immediatamente dopo il ciclo

Un ciclo è una struttura algoritmica, con l'aiuto del quale viene implementata la ripetizione multipla di un blocco di istruzioni.

Istruzione loop con contatore (For … Next)

L'istruzione For … Next consente di scorrere un insieme di istruzioni (istruzioni) un numero specificato di volte. Sintassi dell'istruzione:

Per contatore = valore_iniziale Per valore_finale

[Istruzioni]

[Istruzioni]

Prossimo[ contatore]

Parametro contatoreè una variabile numerica che cambia automaticamente il proprio valore in base al valore fare un passo dopo ogni iterazione del ciclo. Il ciclo viene eseguito fino a contatore£ valore_finale con un valore positivo del parametro fare un passo o fino a contatore³ valore_finale con un valore negativo del parametro fare un passo. Pertanto, il ciclo non verrà mai eseguito se, con un valore di passo positivo valore_iniziale più di valore_finale. Se il parametro Step fare un passo viene omesso, quindi per impostazione predefinita l'incremento della variabile contatore è impostato su 1.

L'istruzione Exit For termina l'esecuzione del ciclo "in anticipo" e trasferisce il controllo all'istruzione successiva all'istruzione del ciclo. Exit For viene solitamente inserito in un'istruzione condizionale, ad esempio:

Se condizione Quindi Esci per

Nota. In base alla sintassi dell'istruzione For, il parametro contatore- una variabile aritmetica di qualsiasi tipo, è sempre meglio utilizzare il tipo intero della variabile, poiché la parte frazionaria del valore di una variabile di tipo reale di solito presenta un errore. Ha a che fare con il modo in cui i numeri vengono archiviati in un computer.

Esempio 1

Trova la somma del primo 10 numeri naturali: S = 1 + 2 + 3 + ...+ 10 . Frammento di programma:

Dim I come Intero, S come Intero

S=0 " Azzeramento del valore della variabile S

Per i = da 1 a 10 " Inizio del ciclo. Imposta i valori di inizio e fine
"Parametro del ciclo. Il passo del ciclo predefinito è 1.

S = S + io " L'operatore di assegnazione viene eseguito ogni volta
" eseguendo il ciclo, in questo esempio 10 volte

Avanti I " Fine ciclo. Il valore del parametro ciclo viene incrementato.

In questo frammento di programma, il ciclo verrà eseguito esattamente 10 volte.

Esempio 2

Visualizza nella 1a colonna del foglio di lavoro (a partire dalla 2a riga) x valori nell'intervallo da 0 a 3,2 con un passaggio di 0,4.

Sottoscheda pubblica()

Dim x As Single, i As Integer

Per x = da 0 a 3.2 Passaggio 0.4

Sebbene la lunghezza dell'intervallo sia esattamente divisibile per il passaggio 0.4, il risultato sul foglio di lavoro è:

Cosa fare?

1. Puoi aumentare leggermente il valore finale, in questo esempio, invece di 3.2, scrivi 3.201.

2. Determinare il numero di ripetizioni del chicle e scrivere un ciclo su un contatore di tipo intero.

In questo caso, il programma sarà simile a:

Pubblico Sub Tab1()

Dim x As Single, i As Integer, n As Integer

n = CInt((3,2 - 0) / 0,4)

Per i = da 0 a n Passaggio 1

Celle(i + 2, 1) = x

Per ogni... Istruzione del ciclo successivo

Il ciclo For Each... Next consente di ripetere l'esecuzione di un gruppo di istruzioni per ogni elemento di una matrice o di una famiglia. Questa istruzione ha la seguente sintassi:

Per ciascuno elemento In Gruppo

[Istruzioni]

[Istruzioni]

Prossimo[ elemento]

Parametro elementoè una variabile che rappresenta un elemento di una famiglia o di un array. Discussione Gruppoè il nome dell'array o della famiglia. Le istruzioni vengono eseguite una sola volta per ogni membro del gruppo. L'uso dell'istruzione è conveniente perché non è necessario sapere in anticipo quanti elementi si trovano in un array o in una famiglia. Variabile elemento deve essere di tipo Variant.

Esempio 1

Trova la media aritmetica di tutti gli elementi dell'intervallo selezionato

Media funzione pubblica (intervallo come intervallo) come doppio

Dim Element come variante

Dim sum come doppio

Dim numero come intero

Quantità = 0

Per ogni elemento nell'intervallo

Importo = Importo + Articolo

Quantità = Quantità + 1

Elemento successivo

Media = Importo/Quantità

Applicazione. L'intervallo selezionato di celle adiacenti deve contenere numeri. I numeri nelle celle vuote sono considerati 0. Il testo nella cella risulterà in un errore.

Le istruzioni If... End If, Select... Case, For... Next, For Each... Next elencate sopra sono un gruppo di istruzioni di controllo che modificano l'ordine in cui i comandi vengono eseguiti. Le istruzioni di controllo possono essere nidificate in qualsiasi ordine.

In questa lezione considereremo di lavorare con un ciclo Per in VBA. Un esempio di utilizzo di un ciclo For mostrerà anche un esempio di creazione di formule in Excel utilizzando le macro.

Ciclo Per funziona secondo il principio di un contatore. Per Viene utilizzato nei casi in cui è necessario ripetere alcune azioni un numero predeterminato di volte. Ad esempio, il ciclo Per spesso usato durante la lettura di array.

Ciclo Per ha la seguente sintassi:
Per contatore = inizio ciclo Per fine ciclo [fare un passo fare un passo]
gruppo di operatori, comandi, ecc.
Esci per
Prossimo contatore

  • "contatore" - variabile che cambia in quella specificata "fare un passo". Se il passaggio non è specificato, ne viene eseguito uno per impostazione predefinita.
  • "inizio ciclo", "fine ciclo numeri o variabili che indicano il limite inferiore del contatore e quello superiore. Il ciclo si ferma quando "contatore" >"fine ciclo" ( oppure, se il ciclo è invertito, es. con il passaggio -1, quindi "contatore"< "fine ciclo").
  • Esci per- comando per forzare l'arresto del ciclo. Viene utilizzato nei casi in cui si è verificato un evento, dopo il quale è necessario interrompere l'esecuzione dei comandi nel ciclo o impedire il verificarsi di un errore.

Diamo un'occhiata a un paio di esempi di utilizzo di un ciclo Per. In futuro, ci incontreremo abbastanza spesso con questo ciclo.

Esempio 1
Date due colonne C ed E riempite di numeri:

Devi aggiungere i numeri nella colonna C con i numeri nella colonna E come segue:
C2+E21, C3+E20, ..., C21+E2. Genera il risultato nella colonna D come formula, ad es. il contenuto della cella del risultato dovrebbe essere "=C2+E21".

Il codice della macro si presenta così (leggiamo dove scrivere il codice):

Sub Ciclo_per()
"una costante che indica il limite del ciclo, cioè fino a che valore deve essere eseguito il ciclo
cost n=21
Per io = 2 Per n
"Crea una formula stringa e salvala in una cella
Celle(i, 4) = "=C" & CStr(i) & "+E" & CStr((n - i) + 2)
" continuazione durante l'esecuzione in un ciclo
Prossimo io
" resto del codice del programma
fine sub

Analizziamo il codice scritto:

  • cost n = 21 - descrizione della costante n con valore 21, cioè numero di righe da scorrere Per;
  • Per io = 2 Per n - i è un contatore che cambierà di 1 ad ogni iterazione del ciclo. Il contatore parte da 2 e termina quando i>n;
  • Celle(i, 4) - cella dedicato foglio, i è il numero della riga, 4 è il numero della colonna in cui viene visualizzato il risultato. Nota che il nostro contatore i indica il numero di riga del foglio Excel;
  • Avanti io- operatore per chiudere il loop e trasferire il puntatore a per. Tutto in mezzo Per e Prossimo viene eseguito in un ciclo;
  • CStr- una funzione che converte un numero in testo.

Alla cella assegniamo la formula creata come segue "=C" & CStr(i) & "+E" & CStr((n - i) + 2). Segno & - "incollare" caratteri, linee. Di conseguenza, otteniamo la formula "=Cn+E((n - i) + 2)" dove n = 21, i è il contatore.
Allarmante? Sembra proprio così :)

Tutto. Dopo aver eseguito la macro, otterremo la seguente colonna (evidenziata) e in ogni cella la formula:

Esempio 2
Consideriamo ora un ciclo con il passaggio indicato. Dopo aver calcolato l'ultima macro, abbiamo ottenuto tre colonne, ora dobbiamo sottrarre D dalla colonna E e visualizzare le formule di sottrazione nella colonna F. Il codice della macro è il seguente:

Sub Ciclo_per_con_passo()
cost n=21
Per io = n Per 2 fare un passo -1
Celle(i, 6) = "=E" & CStr(id" & CStr(io)
Prossimo io
fine sub

In questo caso, tutto è uguale, solo il ciclo ora "corre" non da 2, ma da 21 a 2 con un passaggio (Step) -1.
Il risultato dell'esecuzione sarà il seguente:

Ciclo Per, in VBA, non è un singolo ciclo. In futuro verranno prese in considerazione un paio di opzioni in più per i loop, indispensabili quando si scrivono macro in Excel.

L'algoritmo del ciclo For….Next è mostrato in fig. 5.28.

Contatore – qualsiasi variabile VBA numerica, solitamente una variabile di tipo Integer o Long.

inizio - qualsiasi espressione numerica e definisce il valore iniziale della variabile Contatore.

fine - un'espressione numerica che determina il valore finale della variabile Contatore .

Dichiarazioni – uno, più o nessun operatore. Queste istruzioni eseguono il corpo del ciclo. VBA esegue ciascuna di queste istruzioni ogni volta che viene eseguito il ciclo.

Parola chiave Prossimo

Contatore=contatore+StepSise

Fig.9.28. Per... Algoritmo del ciclo successivo

Parola chiave Prossimo dice a VBA che è stata raggiunta la fine del ciclo. La variabile Counter facoltativa dopo la parola chiave Next deve essere la stessa variabile Counter specificata dopo la parola chiave For all'inizio della struttura del ciclo.

Sintassi:

Per contatore = dall'inizio alla fine

Quando si esegue un cicloPerProssimo VBAprocede come segue:

Assegna il valore rappresentato stella , variabile DA contro .

Esegue tutte le istruzioni rappresentate da Dichiarazioni fino a raggiungere la parola chiave Prossimo . Parola chiave Prossimo indica a VBA che è stata raggiunta la fine del corpo del ciclo.

Modifica una variabile DA contro per l'importo dimensione del passo (se è inclusa la parola opzionale Step) Se Step non è definito, VBA incrementa la variabile contatore di 1.

Ritorna all'inizio del ciclo e confronta il valore corrente della variabile DA contro con il valore rappresentato da End. Se il valore DA contro meno valore fine , VBA continua l'esecuzione dalla prima istruzione dopo la parola chiave Prossimo .

9.2.4. Input-output di array unidimensionali e bidimensionali

Vettore (Vettore) è una raccolta di variabili che hanno un nome e un tipo di base comuni. Un array è un modo conveniente per archiviare più elementi di dati correlati in un unico contenitore per una maggiore praticità ed efficienza di programmazione. Tutti gli elementi di dati archiviati in una matrice devono essere dello stesso tipo.

Un array consente di archiviare e manipolare molti elementi di dati tramite una singola variabile. Oltre a ridurre il numero totale di diversi nomi di variabili di cui è necessario tenere traccia, un altro grande vantaggio dell'utilizzo degli array è che è possibile utilizzare i loop per elaborare facilmente i diversi elementi degli array. Combinando array e strutture di loop (di solito For….Next) puoi scrivere un piccolo numero di istruzioni che elaborano una grande quantità di dati. L'esecuzione delle stesse attività utilizzando singole variabili può richiedere la scrittura di centinaia di istruzioni.

Dimensione matrice

I linguaggi di programmazione di solito utilizzano array unidimensionali e multidimensionali, alcuni dei quali descrivono oggetti relativamente semplici, mentre altri descrivono oggetti più complessi.

Matrici unidimensionali

Un esempio di array unidimensionale è mostrato nella Tabella 9.9.

Tabella n. 9.9

Nella programmazione, viene comunemente utilizzata la numerazione in base zero.

Per accedere ai dati archiviati in un elemento specifico di un array, si specifica il nome dell'array seguito da un numero, chiamato indice dell'elemento. L'indice è racchiuso tra parentesi. Ad esempio, se la matrice nella tabella 1.1 è denominata DoubleArray, l'istruzione seguente assegna il numero 45 a DoubleAny.

Doppio Qualsiasi = Doppia matrice (3)

In questa affermazione, il numero 3 è l'indice dell'array. Poiché la numerazione degli elementi inizia da zero, l'elemento a cui fa riferimento l'operatore è, in effetti, il quarto elemento dell'array DoubleArray.

Quando si esegue l'istruzione DoubleArray, VBA seleziona il valore 45 e memorizza tale valore nella variabile DoubleArray.

Lo stesso operatore può essere utilizzato durante la memorizzazione dei dati in un array:

Doppia matrice (5)=12.

Quando questa istruzione viene eseguita, VBA inserisce il valore 12 nell'elemento della matrice specificato, sostituendo il contenuto precedente di tale elemento.

Gli array unidimensionali sono comunemente usati per rappresentare vari elenchi di dati.

Matrici multidimensionali

Quando è necessario presentare tabelle di dati organizzate in righe e colonne, a tale scopo vengono utilizzati array multidimensionali.

In una matrice bidimensionale, l'indirizzo di ciascuna cella è costituito da due numeri: il numero di riga (primo indice) e il numero di colonna (secondo indice). In VBA puoi creare array fino a 60 dimensioni.

Se il numero di elementi nell'array non cambia, allora tale array viene chiamato statico.

Array statici e dinamici

Se è possibile modificare il numero di elementi in un array durante l'esecuzione di un programma VBA, tali array vengono chiamati dinamici. L'operatore ReDim viene utilizzato per modificare la dimensione di un array dinamico.

VBA mantiene un'area di memoria riservata per tutti gli elementi in un array finché esiste la variabile del tipo di array. Tali array sono chiamati statici perché il numero di elementi nell'array non cambia.

OperatoreOpzione Base

In genere, VBA utilizza array in base zero. L'istruzione Option Base consente di specificare 0 o 1 come seme predefinito per gli indici di matrice. Se l'operatore Opzione Base non utilizzato, VBA avvia la numerazione degli indici da 0 (impostazione predefinita). È necessario inserire un'istruzione Option Base nell'area di dichiarazione di un modulo prima di dichiarare variabili, costanti o procedure. Non è possibile inserire un'istruzione Option Base all'interno di una procedura. Puoi avere solo un'istruzione Option Base in un modulo.

Sintassi:

Opzione Base 0|1

Dichiarazione di matrice

Dichiarazione di un array con un operatore Dim ha la seguente sintassi.

Sintassi:

DimVarName()

Dim VarName ( superiore, superiore]….)[ Come genere],

VarName è qualsiasi nome per una matrice che soddisfa le regole VBA per la denominazione degli identificatori.

Indici - dimensione dell'array.

Come tipo - tipo di dati.

Inferiore: il limite inferiore del valore dell'indice.

Superiore: il limite superiore del valore dell'indice.

Tipo - tipo di dati

Se ometti il ​​tipo, tutti gli elementi dell'array saranno di tipo Variant. VBA inizializza gli elementi degli array numerici su zero e gli elementi degli array di stringhe su stringhe vuote.

Dim str_array (da 1 a 100) come stringa

Variante dimmer_array()

Dim str_Multiplication (da 0 a 15, da 0 a 15) come stringa

Utilizzo di array

Per accedere a un elemento dell'array, è necessario specificare il nome dell'array seguito dal valore dell'indice, racchiuso tra parentesi.

L'accesso a un elemento dell'array ha la seguente sintassi.

Sintassi.

arrayName (validIndex1, ....)

validIndex è il nome dell'array.

validIndex1 è un valore di indice valido per la prima dimensione della matrice.

validIndex2 è un valore di indice valido per la seconda dimensione della matrice.

È necessario fornire un valore di indice per ciascuna dimensione dell'array ogni volta che si accede a qualsiasi elemento dell'array.

I/O di array unidimensionali

Quando si inserisce un array unidimensionale, è necessario inserire in sequenza il 1°, il 2°, ecc. elementi dell'array, allo stesso modo fanno l'output. Per inserire o emettere un array, è necessario organizzare un ciclo. È più conveniente utilizzare un algoritmo che utilizza un ciclo incondizionato per immettere e generare un array unidimensionale.

L'algoritmo di input/output per un array unidimensionale è mostrato nella Figura 5.29.

La procedura è spiegata di seguito.

Sub Array () - il nome della procedura.

Dim Mas (5) As Integer - dichiarata una matrice unidimensionale con 5 elementi, tipo intero.

Dim s As String: dichiarata una variabile di lavoro per l'output finale dei dati dall'array nella finestra di dialogo. As String è il tipo di dati nella variabile da archiviare.

For i = 1 To 5 – la procedura nel primo ciclo For….Next prende gli interi da 1 a 5 e li inserisce in un array.

Mas (i) = InputBox (i) - Immettere un numero intero per l'i-esimo elemento.

Avanti: passaggio al secondo ciclo (gli elementi dell'array vengono inseriti in una stringa e visualizzati in una finestra di dialogo utilizzando l'operatore MsgBox).

Per i = 1 To 5 - elementi nella riga da 1 a 5.

s = s & Mas(i) & “ ;” - formazione di una stringa da elementi dell'array. L'array viene visualizzato su una riga. Gli elementi della matrice sono separati dal carattere ";".

MsgBox s - output dell'array immesso in precedenza.

Fig.5.27. Algoritmo I/O unidimensionale

Riso. 9.29. Algoritmo e procedura per input-output di un array unidimensionale

Input/output dell'array 2D

L'algoritmo e la procedura per l'input e l'output di un array bidimensionale sono mostrati nella Figura 5.30.

Descrizione di questa procedura:

Sub Array () - il nome della procedura

Dichiarazione delle variabili utilizzate in questa procedura:

Dim Mas (5, 5) As Integer - dichiarato un array bidimensionale con 5 colonne e cinque righe, il tipo di numeri è interi.

Dim s As String: dichiarata una variabile di lavoro per l'output finale dei dati dall'array nella finestra di dialogo. As String: il tipo di dati nella variabile da archiviare

Next i - fine dell'operazione di assegnazione delle variabili

Immissione di elementi dell'array nella memoria del computer:

Per i = 1 To 5 - l'input viene eseguito dal primo elemento della prima riga, quindi dal secondo, ecc.

Per j = 1 A 5 fino alla fine della prima riga, quindi dal primo elemento della seconda riga, e così via.

Mas(i,j) = InputBox(i,j) – operatore per l'inserimento di elementi di array nella memoria del computer

Riso. 9.30. Algoritmo e procedura per input-output di un array bidimensionale

Algoritmi di ordinamento degli array

A titolo di esempio, presentiamo l'algoritmo e la procedura per ordinare un array unidimensionale utilizzando il metodo "bolla".

L'output degli elementi dell'array inserito dalla memoria del computer:

Per i = da 1 a 5 - l'output viene eseguito in modo simile all'input

s = s & Mas(i,j) & “ ; "

s = s & Chr (13) - avanzamento riga (output non in una riga, ma in più, come nell'array di input)

Next i - la fine dell'istruzione For….Next

MsgBox s: visualizza l'array immesso in precedenza nella finestra di dialogo

End Sub - la fine della procedura.

Dichiarazioni di ciclo

In VBA Esistono due tipi principali di loop loop con un contatore (parametrico) e loop con una condizione (iterazione).

I loop con un contatore vengono utilizzati nei casi in cui è necessario eseguire un'azione un certo numero di volte.

I cicli condizionali vengono utilizzati quando alcune azioni nel programma devono essere ripetute fino a quando non viene soddisfatta una determinata condizione.

Cicli con un parametro Per il prossimo

Struttura del ciclo:

Per Loop_Parameter = Valore_iniziale Per Valore_finale

[Passo passo]

Operatori

[uscire per]

Prossimo [Parametro_ciclo]

dove per parola chiave VBA (da), che denota l'inizio del ciclo;

loop_parameter variabile definita come contatore di loop;

Start_Value un numero che specifica il valore iniziale del parametro del ciclo;

Alla parola chiave VBA (prima) dividere

Valore_Inizio e Conoscenza_Finale;

End_Value un numero che specifica il valore del parametro loop,

A cui il ciclo finisce;

Parola chiave passo VBA (passo) utilizzato per

Assegnazioni di fasi del ciclo, argomento opzionale;

Step è un numero che specifica la fase del ciclo, ad es. il valore a cui

Aumenta (o diminuisce) il valore del parametro

Pedala ad ogni passo. Questo numero potrebbe essere

negativo;

Esci per Operatore di uscita anticipata del circuito (opzionale);

Prossimo parola chiave VBA (successivo) denotando

Fine ciclo.

Ciclo di lavoro:

Passaggio 1 Innanzitutto, viene determinato il parametro del ciclo e vengono calcolati e memorizzati i valori di inizio e fine di questa variabile.

Passaggio 2 Al parametro loop viene assegnato un valore iniziale.

Passaggio 3 Il valore iniziale del parametro loop viene confrontato con il valore finale.

Se il parametro del ciclo è maggiore del valore finale, il programma esce immediatamente dal ciclo e salta alla riga di codice che segue il ciclo.

Passaggio 4 Viene eseguito il corpo del ciclo.

Passaggio 5 Dopo aver eseguito il corpo del ciclo, il valore successivo viene assegnato al parametro del ciclo. Vai al passaggio 3.

Nota.

1. Se viene utilizzata la parola chiave fare un passo , quindi il parametro del ciclo cambia in base al numero specificato dopo questa parola. Se la parola fare un passo mancante, il valore del passo è uguale a uno.

Esempio 1

Per I = da 0 a 10 Passaggio 2 (valore I aumenterà di 2)

2. Per... Ciclo successivo può essere terminato prematuramente al raggiungimento di qualsiasi condizione. Per fare ciò, nel punto giusto del loop, è necessario posizionare l'operatore Esci per.

Esempio 2

Dim S come intero

Dim j come intero

S=2

Per j = da 1 a 10

S = S + j

Se S > 6 Allora

Esci per (Esci dal ciclo se il valore S > 6)

Finisci se

Avanti j

MsgBox(S)

Loop condizionali (iterativi)

Se un'azione (diverse azioni) deve essere eseguita molte volte, ma non si sa in anticipo quante volte e dipende da alcune condizioni, allora dovresti usare un ciclo con una precondizione o una postcondizione.

In VBA ci sono due cicli principali FATE...LOOP con condizione inserita per parola chiave Mentre , e con la condizione introdotta dalla parola chiave Fino a quando . Entrambi possono essere precondizione o postcondizione.

Sintassi:

dove fare parola chiave (fare);

Mentre parola chiave (ancora);

Fino a quando parola chiave (finché);

ciclo continuo una parola chiave che indica la fine del ciclo;

<условие>espressione logica, la cui verità è verificata

All'inizio di ogni esecuzione del corpo del ciclo;

<тело_цикла>sequenza arbitraria di operatori;

Fare... Durante la costruzione si legge: fare finché la condizione è soddisfatta. Nella progettazione Fare... mentre per

Il costrutto Do... Until recita: continuare fino a quando la condizione non è soddisfatta. Nella progettazione Fare... Fino per aumentare il passo, dovresti scrivere un operatore speciale, perché in esso, in contrasto con il design Per , questo non viene eseguito automaticamente.

Condizione scritta dopo la parola chiave Fino a quando , viene verificato alla fine di ogni iterazione (dopo l'esecuzione del corpo del ciclo). Nota che qui non funziona esattamente come nel ciclo Mentre . Se la condizione è vera ( Vero ), quindi il ciclo termina. Se la condizione non è soddisfatta (è false Falso ), quindi il corpo del ciclo viene eseguito di nuovo.

Esempio 1

Formulazione del problema. Calcolare la somma di una serie finita usando una procedura di subroutine.

Tecnologia di esecuzione delle attività:

1. Dati iniziali: io Z

Risultato: S  R .

2. Digitare nel modulo standard del progetto la seguente procedura utente utilizzando un loop con una precondizione mentre:

summa()

Dim S come intero

Dim i come intero

S=0

io = 1

Fai mentre io<= 10

S=S+i^2

io = io + 1

ciclo continuo

MsgBox(S)

fine sub

3. Digitare nel modulo standard del progetto la seguente procedura utente utilizzando un loop con una precondizione Fino a quando :

summa()

Dim S come intero

Dim i come intero

S=0

io = 1

Finché i > 10

S=S+i^2

io = io + 1

ciclo continuo

MsgBox(S)

fine sub

4 Digitare nel modulo standard del progetto la seguente procedura utente, utilizzando un loop con una postcondizione mentre:

summa()

Dim S come intero

Dim i come intero

S=0

io = 1

S=S+i^2

io = io + 1

Ciclo mentre i<= 10

MsgBox(S)

fine sub

5 Digitare nel modulo standard del progetto la seguente procedura utente, utilizzando un loop con una postcondizione Fino a quando :

summa()

Dim S come intero

Dim i come intero

S=0

io = 1

S=S+i^2

io = io + 1

Ciclo fino a i > 10

MsgBox(S)

fine sub

LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vorresti leggere La campana
Niente spam