Dim strWsName As String
Dim objChbox As Variant
For Each objChbox In Me.Controls
If TypeName(objChbox) = "CheckBox" Then
If Left(objChbox.Name, 3) = "Che" Then
If objChbox.Value = True Then
strWsName = "Tabelle" & Mid(objChbox.Name, 9)
With ThisWorkbook(strWsName)
MsgBox "Mach was auf Tabelle " & strWsName
End With
Else
MsgBox "bubu"
End If
End If
End If
Next
Ich versuche überall, den Codenamen anzusprechen. In der With-Zeile aber frage ich plötzlich nach dem Blattnamen - kann das funktionieren?Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.CodeName = strWsName Then Exit For
Next 'ws
If ws Is Nothing Then
MsgBox "Es gibt kein Tabellenblatt mit dem Codenamen" _
& strWsName, vbCritical
End If
In der If-Struktur wird dann noch geprüft, ob es das gesuchte Tabellenblatt überhaupt gibt..Range("A1")
über die Objektvariable ws mit
ws.Range("A1")
ansprechen.Private Sub cmd_ToDo_ReBlDruck_Click()
Dim strWsName As String
Dim objChbox As Variant
Dim ws As Worksheet
If DruckerWaehlen = True Then 'diese Funktion liegt in modGlobal
For Each objChbox In Me.Controls
If TypeName(objChbox) = "CheckBox" Then
If Left(objChbox.Name, 3) = "Che" Then
If objChbox.Value = True Then
strWsName = "Tabelle" & Mid(objChbox.Name, 9)
For Each ws In ThisWorkbook.Worksheets
If ws.CodeName = strWsName Then
With ws
.Range("Druckbereich").Cells.Interior.ColorIndex = xlNone
.Range("Druckbereich").PrintOut
.Range("Druckbereich").Cells.Interior.ColorIndex = 15
Exit For
End With
End If 'ws.CodeName
Next ws
End If 'objChbox
End If 'Left
End If 'TypeName
Next 'objChbox
End If 'DruckerWaehlen
End Sub
so - und nu gehn wir alle inne Heia...
ThisWorkbook.Sheets("Tabelle1").Range("A1")
hier wird der Blattname in Anführungszeichen, also als String übergeben. Und dieser String lässt sich natürlich beliebig zusammenstoppeln. Wenn ich dasselbe Tabellenblatt über seinen Codenamen anspreche, sieht das so aus
Tabelle1.Range("A1")
Hier ist Tabelle1 eben kein String, der sich zusammenstoppeln ließe. Das Tabellenblatt wird direkt als Objekt angesprochen, wie zum Beispiel eine Textbox auf einem Userformular
UserForm1.TextBox1.Value
Gruß Ingolf