Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ribbon-Fehler

Ribbon-Fehler
09.05.2019 16:26:28
Albert
Hallo zusammen,
ich verwende nachfolgenden Code in zwei Dateien, um nach einem Klick
auf ein Ribbon eine Anmeldeprozedur durchführen zu lassen.
Je nach Benutzer öffnet sich dann weiter ein weiteres Ribbon-Menü oder nicht.
Ich bin am Verzweifeln, da der Code in der ersten Datei tadellos funktioniert und
in der zweiten Datei nicht.
Wenn ich den Error-Handler im Code RefreshRibbons auskommentiere, dann bleibt
der Cursor innerhalb der If-Anweisung bei gobjRibbon.Invalidate mit einem
"with Block Fehler" stehen.
Ich hab keine Ahnung was da sein könnte.

Option Private Module
Option Explicit
Public objRibbon As IRibbonUI
Public gobjRibbon As IRibbonUI
Public Path As String
Public Name As String
Private Const NAMES_NAME = "Ribbon"
#If VBA7 Then
Public Declare PtrSafe Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef destination As Any, _
ByRef source As Any, _
ByVal length As Long)
#Else
Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef destination As Any, _
ByRef source As Any, _
ByVal length As Long)
#End If
Public Sub RefreshRibbons()
Dim objName As Name
'Error handler
On Error GoTo aEnd
If gobjRibbon Is Nothing Then
For Each objName In ThisWorkbook.Names
If objName.Name = NAMES_NAME Then
#If VBA7 Then
Set gobjRibbon = GetRibbon(CLngPtr(Mid$(objName.RefersTo, 2)))
#Else
Set gobjRibbon = GetRibbon(CLng(Mid$(objName.RefersTo, 2)))
#End If
Exit For
End If
Next
Set objName = Nothing
gobjRibbon.Invalidate
Else
gobjRibbon.Invalidate
End If
aEnd:
End Sub
Public Sub onLoad(pobjRibbon As IRibbonUI)
Dim objName As Name
Set gobjRibbon = pobjRibbon
ThisWorkbook.Names.Add Name:=NAMES_NAME, RefersTo:=CStr(ObjPtr(pobjRibbon)), visible:=False
End Sub
#If VBA7 Then
Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
#Else
Function GetRibbon(ByVal lRibbonPointer As Long) As Object
#End If
Dim objRibbon As Object
Call CopyMemory(objRibbon, lRibbonPointer, LenB(lRibbonPointer))
Set GetRibbon = objRibbon
Set objRibbon = Nothing
End Function
Besten Dank für eure Tipps und Hilfe.
Gruß
A.

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

Betreff
Datum
Anwender
Anzeige
AW: Ribbon-Fehler
09.05.2019 17:29:07
mumpel
Hallo!
Du musst Dein VBA-Projekt mit einem Kennwort versehen. Dann dürfte es keine Fehlermeldung mehr geben. Dieser Fehler tritt meist bei ungeschützten Projekten auf, Fehlergrund unbekannt.
Gruß, René
AW: Ribbon-Fehler
09.05.2019 18:14:37
Nepumuk
Hallo René,
ich kann deine Aussage nicht nachvollziehen. Ich habe die Prozeduren mehrfach im Einsatz und noch nie Probleme damit gehabt. Der einzige Unterschied, ich habe an Stelle der Konstante VBA7 die Compilerkonstante WIN64 im Einsatz.
Gruß
Nepumuk
AW: Ribbon-Fehler
10.05.2019 08:39:40
Albert
Guten Morgen Nepumuk,
Compilierkonstante WIN64?
Kannst du mir weiterhelfen?
Das Passwort hab ich schon eingefügt. Daran sollte es nicht liegen.
Ich hab aber das Gefühl, dass bei ThisWorkbook.Names nicht geladen wird.
Beim Durchtippen mit F8 wird die For Each-Schleife sofort übersprungen und
objName ist Nothing.
 If gobjRibbon Is Nothing Then
For Each objName In ThisWorkbook.Names
If objName.Name = NAMES_NAME Then
#If VBA7 Then
Hast noch eine Idee?
Danke und Gruß
A.
Anzeige
AW: Ribbon-Fehler
10.05.2019 08:37:57
Albert
Guten Morgen René,
mit dem Passwortschutz hab ich schon durchgezogen.
Über das Problem fiel ich bei der Erstellung der ersten Datei.
Ich hab aber das Gefühl, dass bei ThisWorkbook.Names nicht geladen wird.
Beim Durchtippen mit F8 wird die For Each-Schleife sofort übersprungen und
objName ist Nothing.
 If gobjRibbon Is Nothing Then
For Each objName In ThisWorkbook.Names
If objName.Name = NAMES_NAME Then
#If VBA7 Then
Hast noch eine Idee?
Danke und Gruß
A.
AW: Ribbon-Fehler
10.05.2019 09:43:59
Albert
Hallo zusammen,
ich hab den Fehler gefunden.
Es lag am OnLoad-Ereignis, dass den Fehler verursacht hat.
Besten Dank trotzdem für eure Hilfe!
Gruß und schönes Wochenende!
A.
Anzeige
AW: Ribbon-Fehler
10.05.2019 18:23:32
mumpel
Aha. Das onLoad-Ereeignis nicht im VBA gehabt, oder in der XML-Datei nicht angegeben?
AW: Ribbon-Fehler
12.05.2019 20:30:21
Albert
Ich Pfosten hatte das Ereignis auskommentiert in der XML...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige