Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ribbon checkbox objRibbon.Invalidate

Ribbon checkbox objRibbon.Invalidate
18.01.2019 16:37:42
Peter
Hallo,
ich brauche Hilfe bei der Einrichtung einer Checkbox im Ribbon.
Bei der Anweisung objRibbon.Invalidate bekomme ich eine Fehlermeldung. Im Forum habe ich dann eine Anleitung gefunden, wie man diesen Fehler umgehen kann. Code s. unten.
Wenn ich den Code in eine "jungfräuliche" Exceltabelle einsetze, funktioniert das auch. Aber eingesetzt in mein Makro bekomme ich wieder den Fehler
"Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt."
Hat jemand eine Idee, was ich ändern kann/muss, damit die Checkbox funktioniert?
Grüße
Peter
~f
Option Private Module
Private Const NAMES_NAME = "Ribbon"
Public Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef destination As Any, _
ByRef source As Any, _
ByVal length As Long)
Public gobjRibbon As IRibbonUI
Public bCheckboxState As Boolean
Public Sub RibbonOnLoad(pobjRibbon As IRibbonUI)
Dim objName As Name
Set gobjRibbon = pobjRibbon
ThisWorkbook.Names.Add Name:=NAMES_NAME, RefersTo:=CStr(ObjPtr(pobjRibbon)), Visible:=False
End Sub

Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
Dim objRibbon As Object
Call CopyMemory(objRibbon, lRibbonPointer, LenB(lRibbonPointer))
Set GetRibbon = objRibbon
Set objRibbon = Nothing
End Function
Sub RefreshRibbon()
Dim objName As Name
If gobjRibbon Is Nothing Then
For Each objName In ThisWorkbook.Names
If objName.Name = NAMES_NAME Then
Set gobjRibbon = GetRibbon(CLngPtr(Mid$(objName.RefersTo, 2)))
Exit For
End If
Next
Set objName = Nothing
gobjRibbon.Invalidate
Else
gobjRibbon.Invalidate End If
End Sub
Public Sub Checkbox_onAction(control As IRibbonControl, pressed As Boolean)
If pressed = True Then
bCheckboxState = pressed
RefreshRibbon
Else
bCheckboxState = False
RefreshRibbon
End If
End Sub
Public Sub Checkbox_getLabel(control As IRibbonControl, ByRef label)
If bCheckboxState = False Then
label = "Beschriftung aus"
Else
label = "Beschriftung ein"
bCheckboxState = True
End If
End Sub
Public Sub Checkbox_getPressed(control As IRibbonControl, ByRef returnValue)
If bCheckboxState = True Then returnValue = 1
End Sub

~f
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ribbon checkbox objRibbon.Invalidate
18.01.2019 17:10:05
Nepumuk
Hallo Peter,
hast du ein 64Bit Office?
Gruß
Nepumuk
AW: Ribbon checkbox objRibbon.Invalidate
18.01.2019 17:13:19
Peter
Ja 64 bit
Peter
AW: Ribbon checkbox objRibbon.Invalidate
18.01.2019 17:23:02
Peter
Hallo Nepumuk,
etwas genauer:
Windows 10 Pro 64 Bit
Excel 2016 MSO 32 Bit
Grüße
Peter
Anzeige
AW: Ribbon checkbox objRibbon.Invalidate
18.01.2019 17:39:06
Nepumuk
Hallo Peter,
dann kann ich das nicht nachvollziehen, denn der Code läuft bei mir unter Excel 2013 problemlos.
Ich stell die Frage mal auf offen. Vielleicht hat jemand anders eine Idee.
Gruß
Nepumuk
AW: Ribbon checkbox objRibbon.Invalidate
18.01.2019 17:54:34
Peter
Hallo Nepumuk,
ja, bei mir läuft der Code auch in einer sonst leeren Exceltabelle. Wenn ich den Code aber in die Tabelle mit meinem Makro kopiere, dann tritt der Fehler auf. Nachvollziehen kann ich das nicht,denn ich ändere ja nichts am Code.
Grüße
Peter
Anzeige
AW: Ribbon checkbox objRibbon.Invalidate
18.01.2019 18:09:24
Nepumuk
Hallo Peter,
kannst du die Mappe hochladen?
Gruß
Nepumuk
AW: Ribbon checkbox objRibbon.Invalidate
18.01.2019 18:39:36
Peter
Hallo,
ja kann ich machen. Da hängt dann ein Haufen "Müll" dran, der keine Rolle spielt. Aber das Ribbon sollte über Blutdruck aufzurufen sein. Und da gibt es auch die Checkbox.
Jetzt versuche ich mal mein Glück, die Datei hochzuladen
Grüße
Peter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige