Toon posts:

[Word/VBA] verplichte invoer userform *

Pagina: 1
Acties:
  • 216 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb al van alles geprobeerd maar kom hier niet uit:

Ik heb (met VBA) een userform gemaakt die gegevens in word zet. De enige controle die ik op de invoer bij tekstvakken wilzetten is dat ze niet leeg mogen zijn. Deze code werkt wel (als er wel iets staat ingevuld)

Code:
Private Sub txtNaam_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If Not IsNull(txtNaam) Then

Cancel = True

MsgBox "Er is geen naam ingevuld!"

End If


End Sub

Bij het weglaten van "NOT" werkt het echter niet meer. Iemand suggesties wat ik fout doe?

  • MissingDog
  • Registratie: Augustus 2002
  • Niet online
Zoiets al geprobeerd?

Visual Basic:
1
2
3
4
If txtNaam.Text = vbNull Then
Cancel = True
MsgBox "Er is geen naam ingevuld!"
End If

Kan ook nog lengte van txtNaam.Text testen met
Visual Basic:
1
If Len(txtNaam.Text) = 0

of gewoon of er een string inzit:
Visual Basic:
1
If txtNaam.Text = ""


note: ik doe zelf allemaal VB6 proggen, dus ik kan geen garantie geven of dit ook in VBA werkt.

[ Voor 18% gewijzigd door MissingDog op 03-07-2004 14:46 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:27

gorgi_19

Kruimeltjes zijn weer op :9

Controleer eens op "" ipv Null / Nothing; of kijk naar de lengte van de invoer van het tekstveld.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Tjsa.. IsNull(txtNaam) is in feite niet meer dan een controle dat heb object txtNaam toegewezen is en niet alleen gedeclareerd. Dat VBA de waarde van een txtNaam veldje ook zo laat controleren is jammer.

Maargoed, probeer eens iets met IsEmpty(txtNaam.Text)

Verwijderd

er is ook een makkelijke controle op Null en ""

code:
1
2
3
if trim$(txtnaam.text & "") = "" then
  ' blaaaaat
end if


Een lege string achter een string plakken forceert namelijk een Null naar een "". En de trim weerhoudt gebruikers ervan alleen maar spaties in te vullen.

  • MissingDog
  • Registratie: Augustus 2002
  • Niet online
Verwijderd schreef op 03 juli 2004 @ 14:52:
er is ook een makkelijke controle op Null en ""

code:
1
2
3
if trim$(txtnaam.text & "") = "" then
  ' blaaaaat
end if


Een lege string achter een string plakken forceert namelijk een Null naar een "". En de trim weerhoudt gebruikers ervan alleen maar spaties in te vullen.
sweeeet....da's wel erg netjes hoor ffrenzy, ik code al rond de 10 jaar VB, maar deze mooie heb ik nog nooit gebruikt (haastwerk, slordig, slap excuus, veel geluk gehad) :)

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 22:08
With ^^^ (onkl FFrenzy.copy; c:\handigecode.paste :))
Zeer galant _/-\o_

Verwijderd

Topicstarter
Alleen deze werkt:

If Len(txtNaam.Text) < 2 Then

Om redenen die ik niet begrijp (op zich niet vreemd, zoveel weet ik niet van vba) werkt:
< 1 of
= 0
niet.

Bedankt voor de tips!

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 22:08
Verwijderd schreef op 03 juli 2004 @ 20:16:
Alleen deze werkt:

If Len(txtNaam.Text) < 2 Then

Om redenen die ik niet begrijp (op zich niet vreemd, zoveel weet ik niet van vba) werkt:
< 1 of
= 0
niet.

Bedankt voor de tips!
;) Die ken ik.
Dit hoort niet, voorbeelden zoals genoemd "horen" te werken, dus misschien duid dit op een ander foutje.
Zou deze kunnen zijn(als jij net zoveel pech hebt als ik had): Ga in VBA naar de properties van je textbox. In de propertie text staat er misschien een spatie i.p.v. niets. Zo ja, haal die weg (uberhaubt, text selecteren en eens flink op Backspace en delete raggen werkt aardig. (eens achtergekomen na een halve dag zoeken :X :X )

Is dat 'm niet-> gooi eens:
code:
1
msgbox len(txtNaam.text)
in je code. Run je form, vul geen naam in en kijk hoe lang de tekst default is. Meer dan 0-> vervang "len" in de code door "asc", weer runnen, je ziet nu de Ascii code (en daar kunnen wij of Google wel weer wat mee verzinnen)

Verwijderd

Topicstarter
heb overal eens flink delete en backspace op losgelaten. Het werkt inderdaad nu wel. Bedankt!

  • DynamicDreams
  • Registratie: Juni 2004
  • Laatst online: 24-04 10:57
Ik gebruik in mijn stukjes programmeerwerk altijd dit:

code:
1
2
3
Function IsLeeg(Tekst) As Boolean
    IsLeeg = (IsEmpty(Tekst)) Or (Trim(Tekst = ""))
End Function


Een simpele function, met space-trimmer.

12x JA Solar 375 Wp op oost-west met Goodwe GW3600D-NS

Pagina: 1