|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
[vba] aggiungere elementi ad array dentro ciclo
Ciao a tutti. Scusate la domanda sicuramente banale ma mi sto avvicinando alla programmazione in vba. Ciò che vorrei fare è, all'interno di un semplice ciclo da 0 a 9, accodare il valore del contatore i al contenuto dell'array in modo tale da ottenere il mio array con tutti i valori da 0 a 9. Ovviamente sbaglio qualcosa. Mi date una mano? Grazie.
Codice:
Private Sub Comando0_Click() Dim elementi As Variant For i = 0 To 9 elementi() = i Next i Debug.Print elementi(1) End Sub |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
|
E' perche non definisci il vettore...e poi non usi gli indici.
Non conosco molto il vb ma dovrebbe essere: Private Sub Comando0_Click() Dim elementi(10) As Integer //tra parentesi la grandezza del vettore For i = 0 To 9 elementi(i) = i //elementi(posizione) = valore di i Next i Debug.Print elementi(1) //stampi la posizione 1 del vettore, per stamparlo tutto //credo tu debba fare un ciclo for per la stampa. End Sub Prova |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Ti ringrazio, funziona.
Avevo provato anche a scrivere elementi(i) = i ma non dichiaravo la dimensione dell'array. A questo punto però mi sorge un dubbio: questo era un esempio banale ma se io devo aggiungere degli elementi se una certa condizione si verifica o meno, non posso sapere a priori quale sarà la dimensione. Quindi come si fa in questi casi? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Devi ridimensionare l'array esistente. Non so quale sia la funzione per far questo, vedi nella documentazione se esiste "Redim".
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Quote:
Ho provato a fare una semplice funzioncina per capirne il funzionamento ma non va Codice:
Private Sub Comando0_Click()
Dim valori As Variant
Dim minori As Variant
valori = Array(5, 10, 11, 13, 6, 9, 12, 18)
X = 0
For i = LBound(valori) To UBound(valori)
If (valori(i) < 10) Then
ReDim Preserve minori(UBound(minori) + 1)
minori(X) = valori(i)
X = X + 1
End If
Next i
MsgBox (minori(0))
End Sub
Ottengo un errore proprio in corrispondenza della riga redim (per l'esattezza errore di run-time 13. Tipo non corrispondente. Potete darmi un ultimo aiutino? Grazie. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Pare che così funzioni. Comunque se avete consigli da darmi, visto che sono agli inizi, son sempre ben accetti.
Codice:
Private Sub Comando0_Click()
Dim valori As Variant
Dim minori() As Variant
valori = Array(5, 10, 11, 13, 6, 9, 12, 18)
'X = 0
For i = LBound(valori) To UBound(valori)
If (valori(i) < 10) Then
ReDim Preserve minori(X)
minori(X) = valori(i)
X = X + 1
End If
Next i
For i = LBound(minori) To UBound(minori)
MsgBox (minori(i))
Next i
End Sub
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:34.




















