Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VBA: Button per VBA in Word einfügen

Empfohlene Antworten

Veröffentlicht

Hallo Leute,

ich habe ein Makro geschrieben, das ich weitergeben möchte (kein Virus). Für dieses Makro soll automatisch ein Button erzeugt werden. Ich bekomme es zwar hin, das ein Button erzeugt wird, aber es fehlt der Verweis auf das Makro.

Weiss jemand wie ich es am besten anstelle ein Button mit Verweis auf das Makro zu erzeugen ?

MfG

Patrick

Zusammenfassend:

Du hast n Makro aufgenommen.

Du erzeugst einen Button.

Der Button soll dsa Marko ausführen.

Das funzt net.

Lösung:

Nimm den Code und kopiere ihn, gehe auf "ThisDocument" (keine Ahnung, wie das auf dt. heißt). Linke Dropdown-List im Codefenster, dort den Button auswählen, dann müßte er ein ClickEvent hinzufügen. Dort fügst du den kopieren Code ein, fertig.


ActiveSheet.Buttons.Add(144.75, 116.25, 202.5, 31.5).Select

'Button an der Ausgewählten stelle erzeugen

Selection.OnAction = "button"

'dem selektierten button wird das Makro (Makro1) zugewiesen

versuch das mal... bei mir hats funktioniert

Edit: na huch da hab ich doch glatt überlesen das das für word und nicht für excel ist... :rolleyes:

ach ja... Matze hat recht ;)

  • Autor

Das Button soll dem Benutzer mit einem Makro eingerichtet werden. Ich gehe davon aus, das der Benutzer wenig Ahnung hat und um erlich zu sein, habe ich nicht andauernd lust, den leuten zu erklären, wie sie einen Button in Word einrichten.

Ich weis das man einen Button mit einem Makro hinzufügen kann, ich habe nur noch nicht herausgefunden, wie ich mit diesem Button auf mein Makro verweise.

MfG

Patrick

Kann es sein, dass du einen Button in der Menüleiste meinst, und nicht wie das Kügelchen und ich angenommen haben einen Button innerhalb des Dokumentes ??

  • Autor

Ja. Aber ich habe die Lösung auch rausgefunden:

Dim Button As CommandBarButton

Set Button = CommandBars("Standard").Controls.Add(Type:=msoControlButton, Before:=7)

With Button

.Caption = "Faxolution"

.OnAction = "FaxButton"

.TooltipText = "Fax senden an Faxolution"

.FaceId = 24

.Visible = True

End With

Trotzdem, danke für eure hilfe.

MfG

Patrick

Bin ich mir nich ganz sicher, ob das in VBA so funzt, aber:


IF Button IS NOTHING THEN

 SET BUTTON CommandBars("Standard").Controls.Add(Type:=msoControlButton, Before:=7)

ELSE

 SET BUTTON = NOTHING

 SET BUTTON CommandBars("Standard").Controls.Add(Type:=msoControlButton, Before:=7)

END IF

Kugel, stimmst du mir zu ??

Original geschrieben von Patrick.Karre

Dim Button As CommandBarButton

Set Button = CommandBars("Standard").Controls.Add(Type:=msoControlButton, Before:=7)

With Button

.Caption = "Faxolution"

.OnAction = "FaxButton"

.TooltipText = "Fax senden an Faxolution"

.FaceId = 24

.Visible = True

End With

Tust du doch. Oben deklarierst du ja "Button" als Button. Ist übrigens sehr unglücklich gewählt. Benutze besser "btnXXX" oder "cmdXXX" wobei du XXX durch igendwas sinnvolles ersetzt.

z.b.:


Dim btnFaxVersenden As CommandBarButton

  • Autor

Er hat aber durch den Befehl .Add immer ein neuen Button vorher erzeugt.

Ich bin mittlerweile auf diese Lösung gekommen:

Dim ButtonTest As CommandBarButton

Set ButtonTest = CommandBars("Standard").Controls(7)

If ButtonTest.Caption = "Faxolution" Then

ButtonTest.Delete

End If

Ich schaue einfach nach, ob an der gewünschten Stelle ein Button mit der gleichen Bezeichnung steht.

Das geht soweit. Nochmal danke für die Mithilfe.

MfG

PAtrick

Original geschrieben von Patrick.Karre

Dim ButtonTest As CommandBarButton

Set ButtonTest = CommandBars("Standard").Controls(7)

If ButtonTest.Caption = "Faxolution" Then

ButtonTest.Delete

End If

Leichter und sauberer dazu wäre

if Commandbars("Standard").Controls(7) is nothing

...

end if

Denn in der Collection Controls ist item #7 dein Button ...

Du kannst nur 1 Objekt an Position 7 stecken (das klingt albern ;) )

hi,

hmmm, ich fände es sauberer, wenn man durch die buttons iteriert und den gewünschten löscht.

for each btn in Commandbars("Standard").Controls

  if(btn.caption = "deine überschrift")then

    btn.delete  'oder wie auch immer das geht...

    exit for

  end if

next

sonst gibt es ein problem, wenn der 7. button mal was anderes ist...

hth...

Hmm, wenn dann:


for each btn in Commandbars("Standard").Controls

  if(btn.[COLOR=red]name[/COLOR]  = "dein name")then

    btn.delete  'auch nicht sicher 

    exit for

  end if

next

Nach der Caption zu suchen finde ich wiederrum unsauber, dann lieber nach dem Namen, der ja beim Instanzieren gegeben worden ist.

  • Autor

Ja aber ich setze das ding doch an Position 7. Wieso sollte ich dann nicht genau diese position ansprechen ? Ich gehe mal davon aus, das es nicht so oft vorkommt, das an dieser position irgend eine reihenfolge von einem normalen Usre geändert wird. Oder irre ich mich jetzt.

Andernfalls, so viel aufwand ist es auch nicht euren Vorschlag einzubauen....

MfG

Patrick

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.