Texbox als variabele

Status
Niet open voor verdere reacties.

ceebee

Gebruiker
Lid geworden
17 okt 2000
Berichten
97
Ik heb een aantal TextBoxen (1 t/m 25) op een UserForm staan, waar ik allemaal iets mee doen.
VBA accepteert geen variabele om ze te aan te wijzen.

for j =1 to 25
UserForm.Textbox& j = tekst(j)
next

Kan dit niet?
 
Indexeren.

De 25 TextBoxen moeten geïndexeerd zijn, dan pas kun je al die 25 TextBoxen in een lus verwerken. De indexen hebben de waarden 0 t/m 24 EN NIET van 1 t/m 25.

De code zou er dan zo moeten uitzien, heb het zelf nog niet getest. De 2e regel is volgens mij nog niet helemaal correct.
Code:
for j = 0 to 24 
   UserForm.Textbox1(j) = tekst(j) 
next

Om de 25 TextBoxen v.e. index te laten voorzien, moet je eerst één TextBox maken en het vervolgens te copieren totdat je alle 25 hebt. Ze krijgen dan elk een index.

Dennis.
 
Hai, :D

Dennis heeft absoluut gelijk dat je txtboxen een volgnummer moeten hebben...(als je voor deze methode wilt gaan tenminste)

Persoonlijk loop ik liever door de controls collectie heen en gebruik ik de eigenschap Tag om de controls te identificeren..Meer hierover later..

Algemene opmerking..je code is nogal rauw..
for j =1 to 25
UserForm.Textbox& j = tekst(j)
next

Jou variabelen zijn niet gedeclareerd (j en tekst)
Dus j moet zijn Dim j as Interger
als tekst een array moet voorstellen dan kan het bijvoorbeeld zo: Dim tekst as Variant (en daarna dus nog vullen)

Je probeert via een string (Textbox&j) een control aan te spreken...Das dus niet goed (en die code kun je dus ook niet uitvoeren)...hiervoor gebruik je .Controls("TextBox" & j).Text

Overigens kun je best met 1 beginnen als benedengrens van jou Array maar dan moet de Option Base naar 1..

Dus dan zou de code er ongeveer zo uit kunnen zien:
Code:
Option Base 1
Sub IndexControls()
Dim j As Integer
Dim tekst As Variant
 tekst = Array("A", "B", "C", "D", "E", "F")

    For j = 1 To 6
        UserForm1.Controls("TextBox" & j).Text = tekst(j)
    Next
End Sub
Zoals gezegd houd ik zelf meer van gebruik van Collections in dit geval die van MSFORMS.Controls

Mijn code ziet er zo uit:
Code:
Private Sub CommandButton1_Click()
    CheckControls "HOI"
End Sub

Private Function CheckControls(sValue As String)
Dim oCtl    As MSForms.Control

    For Each oCtl In Me.Controls
        If oCtl.Tag = "CheckIt" And oCtl.Visible = True Then
            oCtl.Text = sValue
        End If
    Next
End Function

Kijk maar eens naar de bijlage voor beide methoden en kies zelf maar welke je het makkelijkst vindt!

Succes!
:thumb:
 

Bijlagen

Je bent een meester joost verdaasdo. Een zeer haarfijne uitleg! Goed hoor :thumb: :thumb: :thumb:

Dennis.
 
Geplaatst door DENNIS90
Je bent een meester joost verdaasdo. Een zeer haarfijne uitleg! Goed hoor :thumb: :thumb: :thumb:

Dennis.
Hai Dennis, :D

Zeg maar Joost Verdaasdonk hoor...;)

Bedankt, uit jou mond (vingers) vindt ik deze feedback buitengewoon prettig!
Laat ik er dan bij zeggen dat ik van jou antwoorden vaak evenzo onder de indruk ben! :thumb: (Je bent vooral erg divers in kennis)
 
Hoi Joost Verdaasdonk,

Ja, sorry van je achternaam. Nu weet ik het ineens weer, je zei mij ooit dat de 2 laatste letters van je achternaam niet in het invoerveld pasten ten tijde dat je bij Helpmij ging registreren.

Jij ook bedankt voor het compliment, maar ik vind dat ik zelf nog veel te weinig weet over allerlei zaken. Je VBA kennis is in elk geval goed, dat kan van mij niet gezegd worden.

Groetjes,

Dennis.
 
Geplaatst door DENNIS90
Hoi Joost Verdaasdonk,

Ja, sorry van je achternaam. Nu weet ik het ineens weer, je zei mij ooit dat de 2 laatste letters van je achternaam niet in het invoerveld pasten ten tijde dat je bij Helpmij ging registreren.
Hai Dennis, :D

Geen punt hoor en klopt dat we dat al eens eerder besproken hadden...

Heb het toen aan Tiborv gevraagd maar die melde dat dat niet meer gedaan werd omdat teveel mensen dit graag wilde veranderen...(Begrijpelijk, ...zou echter mooi zijn dat als mensen bijvoorbeeld minimaal 1000 berichten hebben gepost, dat zulke zaken mogelijk zouden zijn...wellicht vanwege het feit dat zij trouwe forumbezoekers zijn)

Het is zoals het is...;)

Jij ook bedankt voor het compliment, maar ik vind dat ik zelf nog veel te weinig weet over allerlei zaken. Je VBA kennis is in elk geval goed, dat kan van mij niet gezegd worden.
Klopt zo voel ik het ook heb zelf ook op veel vlakken nog een hoop te leren! (Ben vollop (tenminste als er tijd is) bezig met ASP.NET en ADO.NET...valt niet mee maar erg leuk)

Ja mijn VBA is vrij aardig (mag ook wel als je 8 uur per dag programmeert) ;)

Maar jou VB is beter als het mijne...denk ik! :p

Tot de volgende ronde maar weer...:thumb:
 
Geplaatst door joost verdaasdo
Ja mijn VBA is vrij aardig (mag ook wel als je 8 uur per dag programmeert) ;)
O, vandaar dat je 8 uur per dag programmeert :thumb:
Geplaatst door joost verdaasdo

Maar jou VB is beter als het mijne...denk ik! :p
Nee hoor.
Geplaatst door joost verdaasdo

Tot de volgende ronde maar weer...:thumb:
Oké dan.

Groetjes,

Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan