Anzeige
Archiv - Navigation
700to704
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
700to704
700to704
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Befehlsschaltfläche für Makro automatisch einfügen

Befehlsschaltfläche für Makro automatisch einfügen
01.12.2005 11:55:19
Horst
Hallo Excelperten,
Ich möchte, wenn der Anwender eine Arbeitsmappe öffnet, dass eine Schaltfläche in der Symbolleiste "Standard" erzeugt wird, mit der ein Makro ausgeführt wedren kann.
Damit nicht bei jedem Öffnen eine neue Schaltfläche erzeugt wird, muss diese entweder beim Schließen der Mappe wieder entfernt werden oder (besser) erkannt werden, ob sie schon existiert und dann natürlich nicht angelegt werden.
Gruss Horst

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Befehlsschaltfläche für Makro automatisch einfügen
01.12.2005 14:44:38
Dani
Hallo Horst,
ich habs auch mal versucht und bei mir ging es auf folgende weise:


      
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CommandBars(
"Standard").Controls(1).Delete
End Sub
Private Sub Workbook_Open()
Dim NewButton As CommandBarButton
Set NewButton = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, ID:=2950, Before:=1)
NewButton.Visible = 
True
NewButton.OnAction = 
"Makro1"
End Sub 


Ich wünsche dir viel Erfolg
Gruss
Daniel
Anzeige
AW: Befehlsschaltfläche für Makro automatisch einf
01.12.2005 15:29:18
Horst
Hallo Dani,
dein Tipp war OK. Aber das funktioniert bei mir nur mit den SUBs auto_open() und auto_close(), nicht mit Workbook_BeforeClose() oder workbook_open():
Dim NewButton As CommandBarButton

Sub auto_Close()
NewButton.Delete
End Sub


Sub auto_Open()
'Application.CommandBars("Standard").Controls.Add Type:=msoControlButton, ID _
:=2950, Before:=1
Set NewButton = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, ID:=2950, Before:=5)
NewButton.Visible = True
NewButton.OnAction = "sortieren"
NewButton.Caption = "sortieren"
End Sub

Hat das irgendwelche Risiken und Nebenwirkungen?
Zusatzfrage: kann ich so nur Standard-Schaltflächen einbauen oder auch selbst gezeichnete bzw. importierte?
Horst
Anzeige
AW: Befehlsschaltfläche für Makro automatisch einf
01.12.2005 15:41:07
Dani
Hallo Horst,
wenn du auf der Symbolleiste einen Rechtstsklick machst danach "Anpassen..." dann rechtsklick auf dein Symbol. Es erscheint nun ein Kontextmenu darin kannst du mit "Symbol bearbeiten" das Symbol ändern oder mit "Name" die Bezeichnung.
Was hast du für eine Fehlermeldung mit der Sub Workbook_Open()?
Wenn keine Fehlermeldung erscheint - hast du den Code unter "Diese Arbeitsmappe" gespeichert?
Gruss
Daniel
AW: Befehlsschaltfläche für Makro automatisch einf
01.12.2005 15:48:25
Horst
Hallo Dani,
wie ich manuell ein selbstgezeichnetes Icon gestalten kann, ist mir bekannt. Ich wollte wissen, ob das auch per VBA geht, wenn man beispielsweise das Icon als Datei irgenwo abspeichert. Die Leute, die mit der Datei arbeiten, müssten sonst ja jedes mal nach Öffnen der Arbeitsmappe die Anpassung des Icons neu durchführen.
Oder man müsste per VBA beim Öffnen feststellen können, ob die benutzerdefinierte Schaltfläche schon existiert und sie dann nicht erzeugen. Dann bräuchte man nur einmal das Icon zeichnen.
Horst
Anzeige
AW: Befehlsschaltfläche für Makro automatisch einf
01.12.2005 18:36:48
Daniel
Hallo Horst,
sorry du willst ja den Symbolleistenbefehl in Laufzeit erstellen.
Über die Eigenschaft NewButton.Picture = "C:\..." solltest du das Symbol zuordnen können?
Ich habs nicht getestet aber das sollte funktionieren.
AW: Befehlsschaltfläche für Makro automatisch einf
02.12.2005 07:50:40
Daniel
Hallo Horst,
ich hab mich gestern noch etwas schlau gemacht ;-) Es scheint leider doch nicht so zu gehen wie ich es gestern beschrieben habe. Schau mal hier nach:
http://mypage.bluewin.ch/reprobst/WordFAQ/Button.htm#Button02
Sorry und einen schönen Tag.
Gruss
Daniel
Anzeige
AW: Befehlsschaltfläche für Makro automatisch einf
02.12.2005 09:11:02
Daniel
Hallo Horst,
ich liege dir auf den Ohren aber ich habe noch was gefunden - anscheinend ist es doch möglich mehr Symbolleistensymbole zuzuordnen.
Über die Eigenschaft FaceId wird das Symbol festgelegt. In deinem Fall zum sortieren z.B. NewButton.FaceId = 210
Ich hoffe das hilft dir weiter.
Gruss
Daniel
AW: Befehlsschaltfläche für Makro automatisch einf
02.12.2005 14:37:37
Horst
Hallo Daniel,
leider kann ich dir erst jetzt antworten, da ich bis jetzt nicht an meinem Arbeitsplatz war.
Ich habe inzwischen beim Stöbern im Internet ein Makro gefunden, das alle möglichen Symbole mit der zugehörigen FaceID als Listen in eine neue Symbolleiste einfügt, so dass man sich die einzeln ansehen kann.
Wenn's dich interessiert:
Const cBarName As String = "FaceIds-CommandBarButtons"

Sub SymbolleisteErstellen()
Dim cBar As CommandBar
Dim cBarButton As CommandBarButton
Dim cBarPopUp As CommandBarPopup
Dim IdNummer As Integer
Dim j As Integer
Dim i As Integer
'Prüfen, ob Symbolleiste schon vorhanden ist:
For Each cBar In Application.CommandBars
If cBar.Name = cBarName Then GoTo ende
Next
'Wenn Symbolleiste nicht vorhanden ist, Symbolleiste erstellen:
'  (Temporary = True - Die Symbolleiste wird automatisch gelöscht,
'   wenn die Excel-Anwendung geschlossen wird.)
Set cBar = CommandBars.Add _
(Name:=cBarName, Position:=msoBarTop, Temporary:=True)
cBar.Visible = True
IdNummer = -249
'Anzahl Face-IDs gesamt: 3518
'Erstellt werden 15 Dropdown-Menüs mit je 250 Buttons:
For j = 1 To 15
'PopUp-Menü zur Symbolleiste hinzufügen:
Set cBarPopUp = cBar.Controls.Add(Type:=msoControlPopup)
IdNummer = IdNummer + 250
With cBarPopUp 'Eigenschaften des Menüpunkts setzen
.Caption = "ID : " & IdNummer & " - " & IdNummer + 249
End With
For i = IdNummer To IdNummer + 249
'Ein ControlButton hinzufügen:
Set cBarButton = cBarPopUp.Controls.Add _
(Type:=msoControlButton, Id:=2950)
'Eigenschaften des ControlButton setzen
With cBarButton
.Style = msoButtonIconAndCaption
.Caption = "ID : " & i
.FaceId = i
End With
Next i
Next j
Set cBarPopUp = Nothing
Set cBarButton = Nothing
Set cBar = Nothing
Exit Sub
ende:
MsgBox "Die Symbolleiste '" & cBarName & "' existiert bereits.", _
vbOKOnly + vbInformation, Title:=cBarName
CommandBars(cBarName).Visible = True
End Sub

Horst
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige