Case Unterscheidung

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Case Unterscheidung
von: Toni
Geschrieben am: 17.06.2015 09:50:33

Hallo,
ich habe ein Problem und würde mich freuen, wenn mir einer bei der Lösung helfen könnte!
Quelltext:
For Each OleObj In Worksheets("Input").OLEObjects
Select Case Right(OleObj.Name, 1)
'Abfrage jeder Checkbox und eventuelle übergabe an ein Makro und übergabe des jeweiligen y-Wertes für Objektnamen mit der Nummer 1-9
Case Is = "1"
If OleObj.Object.Value = True Then
y = 1
Call xyz(y)
End If
Case Is = "2"
If OleObj.Object.Value = True Then
y = 2
Call xyz(y)
End If

Case Is = "3"
If OleObj.Object.Value = True Then
y = 3
Call xyz(y)
End If

Case Is = "4"
If OleObj.Object.Value = True Then
y = 4
Call xyz(y)
End If
usw.
Diese Case Abfrage geht noch bis Case Is = "9". Danach kommt noch eine Case Abfrage von 10-20:
For Each OleObj In Worksheets("Input").OLEObjects
Select Case Right(OleObj.Name, 2)

Case Is = "10"
If OleObj.Object.Value = True Then
y = 10
Call xyz(y)
End If

Case Is = "11"
If OleObj.Object.Value = True Then
y = 11
Call xyz(y)
End If

Case Is = "12"
If OleObj.Object.Value = True Then
y = 12
Call xyz(y)
End If

Case Is = "13"
If OleObj.Object.Value = True Then
y = 13
Call xyz(y)
End If
Case Is = "14"
If OleObj.Object.Value = True Then
y = 14
Call xyz(y)
End If
usw.
Dabei soll geprüft werden, ob eine Checkbox ausgewählt ist und wenn das der Fall ist soll ein Makro aufgerufen werden. Funktioniert soweit auch.
Problem ist jedoch, wenn die Checkbox mit der Nummer 11 angewählt ist, wird auch für die Checkbox mit der Nummer 1 die Aktion durchgeführt, ohne das diese angewählt ist! Das soll so nicht sein.
Hat jemand eine Idee wie man das lösen kann?
Viele Grüße
Toni

Bild

Betrifft: AW: Case Unterscheidung
von: Nepumuk
Geschrieben am: 17.06.2015 10:13:55
Hallo,
frag immer 2 Zeichen ab. Also
Case "x1" für Checkbox1
Gruß
Nepumuk

Bild

Betrifft: AW: Passt schon, aber
von: Gerd L
Geschrieben am: 17.06.2015 23:09:37
Hallo Toni!
.. falls die Prozedur über eine bekannte Anzahl von Checkboxen laufen soll, die Indizes der Steuerelemente-Namen enthalten sind u. die eine auszuführende Bedingung stets identisch ist,
reicht dies:

Sub c()
Dim i As Integer
For i = 1 To 20
    With Worksheets("Input").OLEObjects("CheckBox" & i)
        If .Object.Value Then Call xyz(Mid$(.Name, 9))
    End With
Next
End Sub
Gruß Gerd

Bild

Betrifft: AW: Case Unterscheidung
von: Toni
Geschrieben am: 18.06.2015 15:07:24
Hi,
vielen Dank für die Antworten. Konnte das Problem mit der Abfrage von 2 Zciehn lösen.
Vielen Dank!
Toni

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Automatisches Ausfüllen"