Clever-Excel-Forum

Normale Version: (VBA) - Makro-Objekt mit best. Zelle verknüpfen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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ß
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.
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?
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
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