Hallo,
ich moechte gerne einige Workbook bzw. Ribbon Events programmieren. ZIEL: Ei dropdown menue, dass saemtliche worksheets anzeigt und dass bei Anklicken auf den jeweiligen Sheet Namen zu diesem Sheet wechselt. Ausserdem sollen sich die eintraege im Dropdown mit veraendern, wenn ich die Namen der vorhandenen sheets aendere bzw. neue hinzufuege oder alte sheets loesche.
Das funktioniert auch soweit, nur wenn ich die Datei dann als Add-In speichern moechte um den Code eventuell weitergeben zu koennen geht nichts mehr.
FRAGE: MUSS ICH DAS UEBER EIN KLASSENMODUL MACHEN, falls man die standart workbook events nicht als addin weitergeben kann?
Hier der Code (u.a. von Brenden & Mindenhorst):
Option Explicit
Public objRibbon As IRibbonUI
Public Sub OnLoad(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
'Callback for d1 onAction
Public Sub d1action(control As IRibbonControl, id As String, index As Integer)
ThisWorkbook.Sheets(index + 1).Activate
End Sub
'Callback for d1 getItemCount
Public Sub d1getItemCount(control As IRibbonControl, ByRef returnedVal)
returnedVal = ThisWorkbook.Sheets.Count
End Sub
Public Sub d1getItemID(control As IRibbonControl, index As Integer, ByRef id)
id = "Sheet" & index + 1
End Sub
'Callback for d1 getItemLabel
Public Sub d1getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
returnedVal = ThisWorkbook.Sheets(index + 1).Name
End Sub
'Callback for d1 getSelectedItemIndex
Public Sub d1getSelectedItemIndex(control As IRibbonControl, ByRef returnedVal)
returnedVal = ActiveSheet.index - 1
End Sub
Private Sub Workbook_Open()
ThisWorkbook.Sheets(1).Range("A1").Formula = "=Today()"
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
objRibbon.InvalidateControl "d1"
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Not objRibbon Is Nothing Then
objRibbon.InvalidateControl "d1"
End If
End Sub
|