Hallo falcon30,
auch das geht, ist nur etwas komplizierter ;D
Also als erstes legst Du ein
Klassenmodul in deiner Mappe an und gibst den folgenden Code in das Modul ein.
Code:
Option Explicit
Public WithEvents KK As MSForms.CheckBox
Private Sub KK_Click()
On Error Resume Next
ThisWorkbook.Worksheets(cBLATTNAME_SPRUNGZIEL).Activate
On Error GoTo 0
End Sub
Dann benennst Du das Klassenmodul im Eigenschaftsfenster um in
Klasse_KK.
Jetzt fügst du ein Modul ein und kopierst folgenden Code hinein.
Code:
Option Explicit
Dim KKs() As New Klasse_KK
Private Const cOBJ_TYPE = Forms.CheckBox.1
Private Const cOBJ_NAME = CB_SPRUNG_X
Public Const cBLATTNAME_SPRUNGZIEL = Ziel
Sub KlasseKKFuellen()
Dim ws As Worksheet, o As Object
Dim KKsCnt As Long
KKsCnt = 0: ReDim KKs(1 To 1)
For Each ws In ThisWorkbook.Worksheets
For Each o In ws.OLEObjects
If o.progID = cOBJ_TYPE Then
If o.Name = cOBJ_NAME Then
KKsCnt = KKsCnt + 1: ReDim Preserve KKs(1 To KKsCnt)
Set KKs(KKsCnt).KK = o.Object
End If
End If
Next
Next
AUFRAEUMEN:
Set o = Nothing: Set ws = Nothing
End Sub
Zwei Konstanten darin müßtest du anpassen:
a) cBLATTNAME_SPRUNGZIEL
hier muß der Name des Blattes eingetragen werden, welches angesprungen werden soll.
b)cOBJ_NAME
hier muß der spezielle Name deiner Checkboxen, die bei Betätigung den Blattwechsel erzeugen solle, eingetragen werden. Du kannst ihn auch so lassen.
Jeder dafür vorgesehene Checkbox mußt du dann in den Eigenschaften diesen Namen geben.
Wenn du KlasseKKFuellen() ausführst und es fehlerfrei durchgelaufen ist, kannst du schon ausprobieren, ob das Anklicken einer solchen Checkbox den Blattwechsel auslöst. (Entwurfsmodus muß ausgeschaltet sein)
Damit das auch nach dem nächsten Öffnen der Datei zur Verfügung steht, Wird beim Öffnen der Datei das Makro einmal ausgeführt. Dazu fügst du folgenden Code in die Codeseite deiner Mappe (DieseArbeitsmappe).
Code:
Private Sub Workbook_Open()
Call KlasseKKFuellen
End Sub
Grüße matjes