Mein Problem ist, dass ich Den Wert von Controls(Name) aus einer Userform auslesen möchte.
Die Namen meiner Controls habe ich zusammengesetzt.
chkKanal1 chkKanal2 chkKanal3
chkKenn101 chkKenn201 chkKenn301
chkKenn102 chkKenn202 chkKenn302
chkKenn103 chkKenn203
usw.
Über Controls(chkKennxyy).Value kann ich auf den Wert zugreifen. Leider sind die Felder nicht gleich groß wie z.B. bei chkKenn301.
Bis dato habe ich aus Unwissenheit die Größe der Felder im ersten Element unter chkKennx01.Tag "versteckt". Das klappt auch ganz gut. Ist aber unelegant.
Gibt es eine Möglichkeit festzustellen ob Controls(Name) in der Userform vorkommt?
Der Aufruf von
If (Not Controls(Name) is Nothing) then
bringt schon einen Fehler, wenn Name nicht existiert!
Ich will auch nicht alle Controls der Userform durchlaufen, um die Existenz von Controls(Name) festzustellen.
' ............................................
' einige Variablen sind Global gesetzt
Dim chkstr As String
Dim j As Integer
Dim k As Integer
Dim iKtrl As Integer
For i = 1 To 17 ' merker reset
mKenn(i) = False
Next i
For Each cnt In Controls 'durchlaufe alle controls auf der userform
If (Left(cnt.Name, 3) = "chk") Then ' ist im Namen chk
If (Left(cnt.Name, 8) = "chkKanal") And (cnt.Value 0) Then ' ist die CheckBox gesetzt
kastr = Mid(cnt.Name, 10, 2) ' Index rausfiltern
ka = Val(kastr)
For j = 1 To 5 'jetzt schauen ob ob mind. eine der dazugehörenden Checkboxen gesetzt wurde
If j > Controls("chkKenn" & kastr & "1").Tag Then Exit For 'meine Hilfslösung
jstr = Format(j, "0")
chkstr = "chkKenn" & kastr & jstr ' Name zusammensetzen
' If (Not Controls(chkstr) Is Nothing) Then ' das geht nicht
kstr = Controls(chkstr).Name 'Test Zuweisung
kennv = Controls(chkstr).Value ' Test Zuweisung
If kennv = True Then mKenn(ka) = True 'wenn wenigstens eine Checkbox gesetzt wurde dann Merker setzen
' Debug.Print " Next j
If mKenn(ka) = False Then 'wenn keine Checkbox gesetzt wurde Meldung
MsgBox "Keine Werte in Zeile:" & kastr & " ausgewählt!"
Exit Sub
End If
End If
End If
Next cnt
Danke für eine Denkanstoss!
Michel