Syntax variabelen samenstellen VBA

Status
Niet open voor verdere reacties.

Roger55

Nieuwe gebruiker
Lid geworden
7 mrt 2021
Berichten
2
Vermoedelijk was het niet duidelijk.
Ik heb een oplossing, maar die is dan wel heel omslachtig.
Vermoedelijk kan het in 1 regel, en zelfs zonder functie.

<CODE>
Public var_1 As String
Public var_2 As String
...
Public var_9 As String

Private Sub test_varibelen()
Dim i As Integer
For i = 1 To 9
A = Opslaan_als_variabele(i, "Dit is nr.: " & i)
Next i
End Sub

Function Opslaan_als_variabele(Nr As Integer, Data As String)
' vb.: Nr = 4; Data = "Vnr" Naam = "Var_" => Var_4 = "Vnr"
' dit werkt, maar het is wel heel omslachtig
' (nog) geen betere vba-code gevonden
On Error GoTo Fout

' ini
Dim R, Titel, Msg

' lijst mogelijkheden
Titel = "Foutmelding bij Opslaan_als_variabele"
Select Case Nr
Case 1
var_1 = Data
Case 2
var_2 = Data
...

Case 9
var_9 = Data
Case Else
Msg = "Het nr.: " & Nr & " werd niet gevonden." & vbCrLf & _
"Data: " & Data
R = MsgBox(Msg, vbInformation, Titel)
End Select

Exit Function
Fout:
Msg = "De opdracht kon niet worden uitgevoerd. " & vbCrLf & _
"Data: " & Data
R = MsgBox(Msg, vbInformation, Titel)

End Function

</CODE>
 
Laatst bewerkt:
Code:
    Dim var As Collection
    Dim i As Integer
    Set var = New Collection
    For i = 1 To 5
        var.Add "Dit is nr. " & i
    Next
    
    MsgBox var(4)

succes ermee
 
Syntax variabelen samenstellen VBA geen matrx

Bedankt voor het snelle antwoord, maar het is nog niet wat ik bedoelde.
Het is niet de bedoeling een matrix te gebruiken.

Public var_1 As String
Public var_2 As String
...
Public var_9 As String
Ik wil de data in een van deze variabelen stoppen.
Vraag: hoe kan dit in een lus?
i = 5
"var" & i = "dit is nr. 5"
Zo is het (uiteraard) niet. Hoe kan het wel?
 
Het antwoord blijft eigenlijk hetzelfde.
Indien het telkens om een String gaat (of om het even welk ander gegevenstype... zelfs een eigen object), dan moet je dat in een collection steken (of een Array).
En die collectie kan je dan vullen met een lusje.

Mogelijk lijkt het je wat lastig om achteraf de juiste variabele er uit te halen. Maar het loont de moeite om het toch 's aandachtig te bestuderen. Het is dus totaal onpraktisch om aan elke mogelijke variabele in je lus een aparte variabele te benoemen.
 
De door Luc genoemde array methode:
Code:
Dim var_(1 To 9) As String
For i = 1 To 9
    var_(i) = "dit is nr. " & i
Next i

MsgBox var_(5)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan