Toon posts:

[VBA] Meerdere textboxen op een form*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo luitjes....

Ik heb het volgende probleem, op een form heb ik 24 txt boxen.
Deze txt boxen hebben als naam txtMarks1 - txtMarks2 - txtMarks3 enz.
De gebruiker mag niet meer dan 17 chars in dit veld tikken.
Dus ik roep de routine "sub txtMarks1_change()" aan.
ik heb alleen geen zin om voor alle 24 de boxen (ik heb nog 3 van dat soort kolommen) elk afzonderlijk een stukje code te schrijven..uiteindelijk moet de code iets worden van

Sub myCheckLen(MytxtInput)
if len(mytxtinput) > 17 then
msgbox "blabla"
end if

Deze code moet eigenlijk dus voor alle txtboxen op mijn form gaan gelden, ik heb al lopen stoeien met activecontrol........ alleen deze heeft geen routine als value of txt of caption, slechts alleen name kan ik vinden.....

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-08 12:58

NMe

Quia Ego Sic Dico.

In Delphi kun je de Sender van een event casten naar een object van een bepaald type:
Delphi:
1
2
3
4
procedure Form1.button1OnClick(Sender: TObject)
begin
  (Sender as TButton).Caption := 'blaat'
end;

Kun je iets dergelijks niet ook doen in VBA?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • hamburger
  • Registratie: April 2000
  • Niet online

hamburger

BOOOM!!!

-NMe- schreef op vrijdag 08 juli 2005 @ 22:28:
In Delphi kun je de Sender van een event casten naar een object van een bepaald type:
Delphi:
1
2
3
4
procedure Form1.button1OnClick(Sender: TObject)
begin
  (Sender as TButton).Caption := 'blaat'
end;

Kun je iets dergelijks niet ook doen in VBA?
Binnen VBA is dit helaas niet mogelijk.. Het object wat het event krijgt, wordt niet als parameter meegegeven (er is helemaal geen enkele parameter). Ook is het niet mogelijk om een event aan meerder controls hangen. Zodat je het op die manier kan controleren...

Maar kan je niet gewoon MaxLength van elke edit op 17 zetten?

[ Voor 6% gewijzigd door hamburger op 08-07-2005 22:36 ]


  • MrDry
  • Registratie: December 2001
  • Laatst online: 21-08 16:48

MrDry

Desperados!

Waarom geen index (array van textboxen) aan je tekstboxen hangen? Dan triggert ie altijd dezelfde code....

Quod licet lovi, non licet bovi


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-08 12:58

NMe

Quia Ego Sic Dico.

MrDry schreef op vrijdag 08 juli 2005 @ 22:50:
Waarom geen index (array van textboxen) aan je tekstboxen hangen? Dan triggert ie altijd dezelfde code....
Ik denk eigenlijk dat die MaxLength optie van hamburger hierboven iets handiger is. :P

Trouwens, VBA mag tegenwoordig in Officesuites en -software, omdat ze daar meer weten van Officepakketten en dus ook van VBA. :)

PW>OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
die maxlenght is een optie maar geeft geen melding als je dus meer dan 17 chars wilt intoetsen, en geen melding is ook weer zo grof zeg maar...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-08 12:58

NMe

Quia Ego Sic Dico.

Je gebruiker merkt toch vanzelf dat het niet lukt? En je kunt die tekst toch gewoon boven je inputs zetten? "U kunt maximaal 17 karakters per veld invoeren." Ik zou het zelf behoorlijk irritant vinden als ik voor elke tikfout een error message kreeg. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • hamburger
  • Registratie: April 2000
  • Niet online

hamburger

BOOOM!!!

Inderdaad.. Wat je ook eventueel zou kunnen doen is de controle pas uitvoeren als de gebruiker bijvoorbeeld op de knop 'OK' drukt. In de Click van deze knop zou je eventueel door alle controls kunnen lopen om zo te contoleren of de invoer aan alle eisen voldoet

  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
Kijk eens naar een invoermasker (17 optionale chars, ik geloof dat dat wordt 17x 'a')

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ook niet geheel onbelangrijk: over welke vba host hebben we het? Er zijn toch nog wat verschillen onderling. In bv access formulieren ben je klaar zonder een regel vba met gebruik van de validateproperties. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • dajuan
  • Registratie: September 2000
  • Laatst online: 17-08 20:56
Kun je niet met de Call optie gaan werken? Dan maak je eerst een private sub blabla. Daaronder zet je dan de text die je wilt hebben, dus om je veldlengte onder de 17 te houden.
Daarna roep je die bij elk change event aan met Call blabla (dat call mag je weglaten, het werkt ook zonder.. maar het staat wel zo netjes ;))

Je moet dan dus wel overal onder alle change events van de 24 textboxen dat Call blabla zetten, het scheelt in ieder geval in hoeveel code en het is een stuk overzichtelijker. Verder zou ik niet zo 1-2-3 weten hoe je dat kunt uitvoeren zonder overal iets bij het change event te zetten.

[ Voor 46% gewijzigd door dajuan op 09-07-2005 23:49 ]


  • Pyrowired
  • Registratie: Februari 2004
  • Laatst online: 05-01-2025
Definieeer ergens een public function (in het formulier zelf of beter in een aparte module)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Function CheckInput(WaardeTeChecken)

Dim Waarde, msg, titel, stijl


msg = "een leuk tekstje"
titel = "Titeltje"
stijl = vbcritical + vbokonly

if len(WaardeTeChecken) > 17 then
echo msgbox(msg, stijl, titel)
nog meer dingen die je wilt laten doen
else
en anders doe je iets anders
end if

end function


en door bij de onchange properties Checkinput(Me!tekstveld.value) kan je d.m.v. een zelf gedefinieerde funktie eenvoudig elk veld checken wat je wilt zonder tig keer die functie neer te kwakken.

Zolang de zon schijnt, blijf ik binnen.

Pagina: 1