Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben


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 ;)

Geschrieben

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

Geschrieben

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

Geschrieben

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 ??

Geschrieben
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

Geschrieben

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

Geschrieben
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 ...

Geschrieben

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...

Geschrieben

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.

Geschrieben

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...