Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

(VBA) - Makro-Objekt mit best. Zelle verknüpfen
#1
Ich bin es nochmal :),

da mir in dem anderen Thread so genial geholfen wurde (Danke nochmal!), bin ich gerade in einem Workflow ;).

Gibt es eine Möglichkeit, ein Objekt, mit dem ein Makro gestartet wird, mit einer bestimmten Zelle zu verknüpfen? Diese Zelle soll dann im Makro auch als Bezug genutzt werden. Das soll verhindern, dass ich 15 Makros mit leicht anderen Zellbezügen schreiben muss. Ich versuche mein Anliegen nochmal zu umschreiben:

Ich habe eine Übersicht eines Mitarbeiters, in dem seine Urlaubswünsche geordnet und strukturiert dargestellt werden. In diesem Tabellenblatt soll der Nutzer des Workbooks auch Veränderungen vornehmen können, in den restlichen nicht.
Die Liste der Urlaubswünsche sucht sich das Tabellenblatt aus einer langen und unstrukturierten Liste eines versteckten Tabellenblattes.
Nun möchte ich einen Button neben den Wünschen einfügen, mit dem ein Makro gestartet wird. Das Makro soll dann die unstrukturierte Liste nach den nebenstehenden Strings absuchen und dann die entsprechende Zeile - sprich den Urlaubswunsch - löschen. Das Makros ist bereits vorhanden, es sind jedoch feste Zellbezüge integriert.
Damit ich nicht 15 Makros für jeden einzelenen Urlaubswunsch schreiben muss, habe ich mir gedacht, dass das Makro schauen soll, wo sich das Objekt mit dem es gestartet wird, liegt und dann nach dem nebenstehenden Wunsch suchen.

Ich hoffe, dass das verständlich war :)

Gruß
Antworten Top
#2
Hallo Easy,

prinzipiell ist so was möglich. Allerdings gibt es da auch die eine oder andere Klippe zu beachten, z.B. falls der user das objekt mal verschiebt oder wenn die Zeile gelöscht wird muss eventuell das Objekt weg oder beim Hinzufügen einer Zeile ein neues Objekt dazukommen?

Eine Alternative könnte da eine Aktion bei Doppelklick in die betreffenden Zellen sein.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Danke für die Antwort,

meine Idee ist, dass das das Objekt, mit dem das Makro gestartet wird, fest dort verbleibt und nur eingeblendet wird, wenn daneben ein Urlaubswunsch überhaupt steht. So war meine Idee. Ein Doppelklick wäre ne interessante Alternative, allerdings weiß ich nicht, ob das so eingängig für einen nicht-geübten-Excel-Nutzer wäre.

Wie würde so eine fixe Positionierung denn aussehen? Wie müsste man das machen?
Antworten Top
#4
Hallo,

(26.08.2018, 11:57)EasY schrieb: Damit ich nicht 15 Makros für jeden einzelenen Urlaubswunsch schreiben muss, habe ich mir gedacht, dass das Makro schauen soll, wo sich das Objekt mit dem es gestartet wird, liegt und ...

folgender Code kommt in ein allgemeines VBA-Modul:
Sub Meine15MakrosInEinem()
MsgBox "Ich komme aus der Zeile " & ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
End Sub
Weise den Schaltflächen oder sonstigen Objekten, die aber keine ActiveX-Steuerelemente sein dürfen, dann jeweils dieses Makro zu.

Das Makro dient nur zur Demo, da ja keine genaueren Infos kamen.

Gruß Uwe
Antworten Top
#5
Hallöchen,

eine fixe Positionierung könntest Du z.B. durch den Blattschutz erreichen.

Hier mal noch eine Variante mit Hyperlinks. Wenn Du in Spalte A einen neuen Eintrag vornimmst, wird dort ein Hyperlink angelegt. Probier's mal aus Smile Bei FollowHyperlinks könntest Du dann eine andere Aktion als die Meldung ausführen ...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column <> 1 Then Exit Sub
   ActiveSheet.Hyperlinks.Add Anchor:=Target, Address:="", SubAddress:= _
       "Urlaubswuensche!" & Target.Address, TextToDisplay:=Target.Value
End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
MsgBox Target.Name & " in " & Target.SubAddress
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste