Symbol mit VBA automatisch erstellen und einfügen
Hallo Leute,
ich komme mit folgendem Problem nicht weiter.
Ich habe eine Vorlagedatei (Excel2000) mit mehreren Makros.
Diese Datei sollen Mitarbeiter kopieren und umbenennen.
Der VBA Code solle folgendes leisten:
* beim starten der Datei automatisch ein Symbol erstellen
* das Symbol soll mit einem Makro aus der Arbeitsmappe verknüpft
werden
* dies muss unabhängig vom Dateinamen geschen, da die Mitarbeiter
die Name unterschiedlich vergeben.
Könnt Ihr mir einige Anregungen geben?
Vielen Dank schon mal von mir im Vorraus
Eleve
Antwort schreiben
Antwort 1 von aiuto vom 17.12.2019, 16:39 Options
Hi Eleve,
Nachfolgender Code sollte in ein Modul kopiert werden, und das von Dir Beschriebene erledigen:
Option Explicit
Sub Mein_Makro()
Beep
End Sub
Sub auto_open()
Symbolleiste
End Sub
Sub Symbolleiste(strName$)
If strName = "" Then strName = "Meine Symbolleiste"
Dim MyCButton As CommandBarControl
Dim myCbar As CommandBar
If Application.CommandBars(strName).Index > 0 Then
Application.CommandBars(strName).Delete
End If
Set myCbar = CommandBars.Add(strName, msoBarFloating, , True)
With myCbar
.Top = 200 'Position im Fenster
.Left = 100
.Visible = True
End With
Set MyCButton = myCbar.Controls.Add(msoControlButton)
MyCButton.FaceId = 500 'Symbolauswahl über Zahl
MyCButton.TooltipText = "Meine Makrobeschreibung"
MyCButton.OnAction = "Mein_Makro" 'verknüpftes Makro
End Sub
mfg
vom Helfer
Antwort 2 von Eleve vom 18.12.2019, 14:00 Options
Hallo lieber Helfer,
vielen Dank erst mal für die Antwort.
Ich habe folgendes Problem.
Wenn ich den Code in mein auto_open Makro integriere bricht der Code in der Zeile:
If Application.CommandBars(strName).Index > 0 Then
mit dem Fehler
Zitat:
Laufzeitfehler -2147024809(80070057)
Microsoft Excel kann keine übereinstimmenden Daten zum Ersetzen finden. Keine Zelle der Markierung enthält den Suchbegriff oder kein Datensatz entspricht dem Kriterium.
ab.
Wenn ich Deine Codes so verwende, wie Du es mir geschrieben hast, dann krieg ich die Meldung:
Zitat:
Argument ist nicht optional.
Ich hab den Code in ein neues Modul in einer neuen Mappe kopiert.
Kann ich irgendetwas dabei falsch machen?
Viele Grüße Eleve
Antwort 3 von aiuto vom 18.12.2019, 15:21 Options
Hallo Eleve,
Du kannst den IF-Block komplett löschen, der diente während der Entwicklung dazu, die (bereits) vorhandene Symbolleiste zu löschen.
Zitat:
If Application.CommandBars(strName).Index > 0 Then
Application.CommandBars(strName).Delete
End If
Habe vergessen das zu entfernen
mfg
vom Helfer
Antwort 4 von Eleve vom 20.12.2019, 14:32 Options
Hallo Helfer,
vielen Dank! Das wars.
Ich musste noch eine Modifikationen vornehmen - Sub auto_open in sub workbook_open.
Hast mein Weihnachtsurlaub um einiges ruhiger gemacht -
schönen Dank nochmal und eine Gute Zeit
Eleve