[VBA] Variabele omzetten naar een control

Pagina: 1
Acties:

  • Coolhva
  • Registratie: Juni 2003
  • Laatst online: 29-12-2024

Coolhva

Dr. Zero Trust

Topicstarter
Het is vandaag bij ons nationale formulier aanpasdag en ik zit met een probleem.

Ik heb een stuk of 25 tekst velden en deze moeten, indien niet ingevuld, worden gevuld met de tekst "N.V.T.". Aangezien ik veel met ASP/PHP programmeer denk ik dat het in VBA ongeveer hetzelfde werkt... niet dus :(

Het is Office 2003 / Word 2003 met VBA. Ik heb een userform met daarop een stuk of 25 textbox's. Dit is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'Array maken van de namen van de textbox-en
StrFlds = "txtresultaat2|TXTResultaat3|TXTResultaat4|TXTResultaat5|TXTResultaat6"
'Nu ff dat in een array zetten
ArrFlds = Split(StrFlds, "|")

'Een loop zodat ie alles af gaat
For X = 0 To (UBound(ArrFlds) - 1)

    'En hier gaat het fout :(... ArrFlds(X).Text mag dus niet...

    If ArrFlds(X).Text = "" Then
        'Het wordt in het document ingevoegd op bookmark's...
        Selection.GoTo What:=wdGoToBookmark, Name:=ArrFlds(X)
        Selection.InsertAfter "N.V.T."
    End If

Next


Wat ik dus probeer is gewoon dmv een string variabele (die te koppelen aan een control en) daar een value te halen uit een textbox.

Is het nog te volgen wat ik aan het doen ben? Ik snap het bijna niet meer :(

Maar hij loopt dus vast op het punt dat ik probeer te kijken of de value in de textbox gelijk is aan ""...

Ik snap wel waarom ... maar weet niet hoe ik het op moet lossen ...

Verwijderd

lijkt me duidelijk, in VB is begint een array index bij 1 en niet bij 0.

je moet je lusje dus aanpassen.

waarom ze dat zo hebben gedaan? beats me maar het is wel zo.

  • AceRimmer
  • Registratie: Maart 2001
  • Laatst online: 19:50

AceRimmer

What a guy...

ArrFlds(X) is een string en niet de textbox die je wilt hebben.

Je kunt dit wel gebruiken:

code:
1
2
3
4
Set obj = Me.Controls(ArrFlds(X))

if obj.text = ""
etc...

Smoke me a kipper, I'll be back for breakfast


Verwijderd

btw je kunt het ook eenvoudiger doen door door de controls-collectie van het form te lopen.

even snel uit mijn hoofd: (Mijn vb is wat roestig)

code:
1
2
3
4
5
6
7
for each ctr in me.controls
   if ctr is textbox  and ctr.text = "" 

      ' do your own magic here
 
   end if
next


je kunt ook als je graag aan je array oplossing vast houd een for each gebruiken om door je array te loopen. Het grote voordeel van for each is dat je altijd goed zit en je gene zorgen hoeft te maken of je wel de juiste start en eindcondities hebt gebruikt.

  • Coolhva
  • Registratie: Juni 2003
  • Laatst online: 29-12-2024

Coolhva

Dr. Zero Trust

Topicstarter
Utilizer

Bedankt voor je antwoord. Toch heb ik het idee dat je niet helemaal begrijpt wat het probleem is. Toch bedankt voor de moeite :)!!!!

P.s. bij een "echte" array begint het misschien met 1 maar zodra je Split gebruikt begint hij toch echt met 0.

AceRimmer

Als je een vrouw was geweest dan .... :P
Harstikke bedankt want dit is gewoon de oplossing.

Dat het zo simpel kan zijn... :)

  • AceRimmer
  • Registratie: Maart 2001
  • Laatst online: 19:50

AceRimmer

What a guy...

Graag gedaan ! :> ;)

Smoke me a kipper, I'll be back for breakfast

Pagina: 1