PDA

Vollständige Version anzeigen : ctl as Control


MarcH870
01.10.2001, 20:17
Hi Leute,

ich mal wieder, habe eien For Each next- Schleife, die alle Steuerelemente des Formulars durchlaufen soll , ausserdem lasse ich noch die variable -i- hochzählen ,mit -i- wird dann entschieden ob in der Msgbox der/die/das/den usw. kommt

die sache ist die , die Steuerelemnte werden nicht in der Reihenfolge durchlaufen wie sie unter -Activierreihenfolge- zu sehen sind, dachte zunächst , es muss dann wohl die reihenf. sein in der die erzeugt wurden , es ist aber nur das erste das aus der reihe tanzt es tacht einfach nicht auf ,stattdessen kommt als erstes eines das ziemlich in der mitte der aktivierliste steht ??

Code:

For Each ctl In Controls

If IsNull(ctl) Then
select case i
case is = 1
txt = "das"
case = 2
txt = "der"
.
.
end select

Select Case ctl.Name
case is = "..."
MsgBox "bitte blabla & txt &ctl.Name & " ist leer!"
end select
Next

erwin
01.10.2001, 20:56
Lies die Indizes (i) der Controls sowie die Eigenschaft TabOrder in ein dyn. Array (Me.controls.count) ein und sortiere dann nach TabOrder.

HTH erwin...

MarcH870
07.10.2001, 16:11
Hallo Erwin,

vielen dank ,hatte so viele fragen in letzter zeit, dass ich auf diese hier , erst jetzt wieder gestossen bin , habe deine vorschlag noch nicht ausprobiert , aber ist denk ich eine möglichkeit

gruss marc

MarcH870
07.11.2001, 19:10
Hallo Erwin,

will mich gerade dabei machen , bräuchte aber doch noch ein paar instructions glaub ich .
was ist mit "Taborder" gemeint, kann dazu in
OH nichts finden, falls dies eine eigenschaft ist di man per VBA selbst hinzufügen muss- davon bin ich noch etwas weit entfernt ,
wäre schön wenn du dich nochmal meldest

gruss marc

MarcH870
15.11.2001, 22:26
nach oben bitte

Sascha Trowitzsch
15.11.2001, 23:36
...Es heißt eigentlich auch nicht TabOrder, sondern TabIndex.

Die Aktivierungsreihenfolge hat nichts mit der Control-Nummer zu tun. Letztere wird mit der Erstellung im Formular aufsteigend vergeben und ändert sich nicht durch Einstellen der Reihenfolge.

Für deinen Zweck brauchst du doch aber den TabIndex gar nicht, oder? Du willst doch nur auf leere Felder aufmerksam machen? Da reicht es, die Controls alle durchzugehen (For Each...) und auf Null zu testen.
Wenn du unbedingt den Text "der,die,das" drin haben willst, so ist es übersichtlicher, den über Select_Case-Auswahl der Controlnamen zu ermitteln, statt über den Control-Index, den du ja eh nicht kennst.
Also:

If IsNull(ctl.Value) then
Select Case ctl.Name
Case "Nachname": txt="der"
Case "Datum2": txt="das"
.
.
End Select

MsgBox "bitte blabla & txt &ctl.Name & " ist leer!"

Ciao, Sascha