Veröffentlicht 24. Juli 200322 j 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
24. Juli 200322 j 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.
24. Juli 200322 j 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... ach ja... Matze hat recht
24. Juli 200322 j 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
24. Juli 200322 j 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 ??
24. Juli 200322 j 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
24. Juli 200322 j Autor Hallo Leute, ein Problem habe ich noch, wie kann ich überprüfen, ob der Button schon vorhanden ist und ggf. löschen ? MfG Patrick
24. Juli 200322 j 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 ??
24. Juli 200322 j Autor Muss ich nicht noch vorher irgendwie angeben, welchen Button ich meine ? MfG Patrick
24. Juli 200322 j 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
24. Juli 200322 j 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
24. Juli 200322 j 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 ...
24. Juli 200322 j 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...
24. Juli 200322 j 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.
24. Juli 200322 j 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.