Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1072to1076
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Check ob Controls(Name) in Userform
04.05.2009 19:32:15
Michel
Hallo und Danke für die vielen Anregungen, die ich bisher bekommen habe.
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Check ob Controls(Name) in Userform
04.05.2009 22:23:25
ransi
HAllo
Du brauchst nicht alle Elemente ablaufen.
Wenn es das Control nicht gibt, läuft diese Function in einen Fehler.
Den kannst du auswerten:
' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub UserForm_Click()
MsgBox ControlExists("CommandButton1")
End Sub

Public Function ControlExists(contrName As String) As Boolean
Dim obj As Control
On Error Resume Next
Set obj = Me.Controls(contrName)
If obj Is Nothing Then
    ControlExists = False
    Err.Clear
    Exit Function
    Else:
    ControlExists = True
End If
End Function

ransi
Anzeige
Check ob Controls(Name) in Userform
05.05.2009 11:30:57
mICHel
@ransi: DANKE!

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige