Loop through Application.Diaolgs möglich?

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von cry.baby.

    Loop through Application.Diaolgs möglich?

    Hallo zusammen,

    ist es möglich durch z.B. ein Worksheet_BeforeRightClick-Event zu vermeiden, dass der weiterführende Link (für Hyperlinks) ausgeführt werden kann? D.h. der Code müsste bewerkstelligen, dass nachdem das Dialog-Fenster für "Link einfügen" [Application.Dialogs(xlDialogInsertHyperlink)] geöffnet wurde, es anschließend wieder geschlossen wird. Dachte daran, durch alle Diaolge zu loopen oder etwas in der Art...

    Grüße

    PS: Weitere Problematik ist, dass das nur für eine bestimmte Range gültig sein darf. Auf dem restlichen Arbeitsblatt muss die Eingabe von Hyperlinks weiterhin möglich sein.
    Hallo!

    Sperre den Befehl für den Dialog (z.B. über die Command-Ebene der RibbonX-Definition) und blende den Befehl in Kontextmenü und Menüband aus (über RibbonX oder VBA).

    Für Zellen in denen Links eingefügt werden dürfen baust Du Dir einen eigenen Dialog (Userform), der wäre dann auch einfacher zu bedienen, und füge dafür eine eigene Schaltfläche in Kontexmenü und/oder Menüband ein.

    Den Rechtsklick kannst Du ganz einfach abfangen. Das hilft aber nur für das Kontextmenü. Das Einfügen per Menüband oder Makro ist dann trotzdem möglich. Beispielmakro im Folgenden (muss in den Codebereich der Tabelle), hier wird der Rechtsklick für A1 abgefangen.

    Visual Basic-Quellcode

    1. Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    2. If Target.Address = "$A$1" Then Cancel = True
    3. End Sub


    Das Öffnen des Dialoges "Hyperlink einfügen" kannst Du jedoch nicht überwachen, zumindest nicht ohne erheblichen Aufwand (und der könnte Excel stören und zum Absturz bringen).

    Gruß, René
    Hi René,

    danke für die Anregungen, allerdings ist das zu "radikal". Rechtsklick muss immer noch möglich sein, für diverse andere Funktionen und eine UF ist nicht gewünscht.

    Trotzdem würde mich interessieren, wie die Sperre über die Command-Ebene der RibbonX-Definition funktionert? Du schreibst über RibbonX oder VBA?!?
    Anbei eine Beispieldatei. Die musste ich in ein ZIP-Archiv packen, da xlsm hier nicht erlaubt ist.

    Der Befehl "Hyperlink" wird umgelenkt, für Zelle A1 und für die Menüband-Schaltfläche. Für alle anderen Zellen wird der Befehl normal ausgeführt.

    XML-Code:

    HTML-Quellcode

    1. <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="NHA_Excel">
    2. <commands>
    3. <command idMso="HyperlinkInsert" onAction="NHA_Exit" />
    4. </commands>
    5. <ribbon>
    6. </ribbon>
    7. <backstage>
    8. </backstage>
    9. </customUI>


    In ein Standardmodul:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Public objRibbon As IRibbonUI
    3. Public bolNotHyperlinkAllowed As Boolean
    4. Public Sub NHA_Excel(ribbon As IRibbonUI)
    5. Set objRibbon = ribbon
    6. End Sub
    7. Public Sub NHA_Exit(control As IRibbonControl, ByRef cancelReturn)
    8. If Not bolNotHyperlinkAllowed Then
    9. cancelReturn = True
    10. MsgBox "Das Einfügen von Hyperlinks ist hier nicht erlaubt. Vorgang abgebrochen.", 64, "Hinweis"
    11. Else
    12. cancelReturn = False
    13. End If
    14. bolNotHyperlinkAllowed = False
    15. End Sub


    In "DieseArbeitsmappe":

    Visual Basic-Quellcode

    1. Private Sub Workbook_Open()
    2. bolNotHyperlinkAllowed = False
    3. End Sub


    In den Codebereich der Tabelle:

    Visual Basic-Quellcode

    1. Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    2. If Target.Address = "$A$1" Then
    3. bolNotHyperlinkAllowed = False
    4. Else
    5. bolNotHyperlinkAllowed = True
    6. End If
    7. End Sub




    Du schreibst über RibbonX oder VBA?!?

    Beides. Das Menüband wird über RibbonX beeinflusst, der Code (Callbacks) dafür gehört in VBA. Wie man den RibbonX-Code einbindet kannst Du in meinem RibbonX-Workshop lernen (siehe Signatur)

    Dateien

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mumpel“ ()