Hi Leute…
ich bin gerade auf der Suche ob es möglich ist, ein Makro aufzurufen, sobald eine (bestimmte) Zelle (in einem Bereich) geklickt wird…
Sprich es soll in Tabellenblatt „Input“ reagiert werden wenn eine Zelle im Bereich C5:G10 geklickt wird.
Anschliessend müsste ich noch die Position der Zelle bestimmen…
Dazu kenne ich
ActiveCell.Column für die Spalte
und
ActiveCell.Address für die gesamte Adresse
mir fehlen aber noch die Möglichkeiten die aktive Zeile und die aktive Spalte als Buchstabe auszugeben…
Und weil ich grad so schön am fragen bin:
kann ich einen string nach einem bestimmten Zeichen durchsuchen und/oder abschneiden.
also im Prinzip die Befehle, die den php Befehlen
substr
strpos
strlen
str_replace
nahekommen.
Vielen Dank für alle Infos.
Munich
Hallo, Munich!
ich bin gerade auf der Suche ob es möglich ist, ein Makro
aufzurufen, sobald eine (bestimmte) Zelle (in einem Bereich)
geklickt wird…
Sprich es soll in Tabellenblatt „Input“ reagiert werden wenn
eine Zelle im Bereich C5:G10 geklickt wird.
Das geht über ein Makro im Ereignis „Worksheet_SelectionChange“. Das übergebene Rangeobjekt Target enthält die angewählte Adresse. Hier kannst Du überprüfen, ob die Adresse im gewünschten Bereich liegt.
Anschliessend müsste ich noch die Position der Zelle
bestimmen…
Dazu kenne ich
ActiveCell.Column für die Spalte
und
ActiveCell.Address für die gesamte Adresse
mir fehlen aber noch die Möglichkeiten die aktive Zeile und
die aktive Spalte als Buchstabe auszugeben…
Die sollte .Address doch liefern, jedenfalls, wenn Z1S1-Bezugsart nicht aktiv ist.
substr = Mid$
strpos = InStr (vermute ich)
strlen = Len
str_replace = Replace
nahekommen.
Sollten sie eigentlich genau treffen.
Gruß, Manfred
Danke erst mal…
Das Stichwort Selection_Change war schon mal recht hilfreich…
Ich hab dazu jetzt ein wenig gegoogelt aber bei der umsetzung stell ich mich einfach zu doof an…
Also ich hab im VBA Editor ein Klassenmodul erstellt mit dem Inhalt
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox („test“)
End Sub
rein Theoretisch stelle ich mir jetzt vor, dass ich bei jedem Zellenwechsel eine msgbox erhalte, aber das tu ich nicht…
Was mach ich denn falsch? Kannst Du mir das noch ein wenig genauer erklären wie ich das aktivieren kann?
Anschliessend müsste ich noch die Position der Zelle
bestimmen…
Dazu kenne ich
ActiveCell.Column für die Spalte
und
ActiveCell.Address für die gesamte Adresse
mir fehlen aber noch die Möglichkeiten die aktive Zeile und
die aktive Spalte als Buchstabe auszugeben…
Die sollte .Address doch liefern, jedenfalls, wenn
Z1S1-Bezugsart nicht aktiv ist.
Address liefert mir etwas wie $a$1 und damit relativ unbrauchbar wenn man da seitlich verschieben will… Geht zwar auch aber eben umständlicher find ich…
Vielen Dank jedenfalls schon mal für die Tipps.
ah jetzt hab ichs
Danke nochmal… ok, jetzt weiss ich wohin derartiger Code muss 
hat sich damit erledigt bis auf das Zeilen-Problem *g*
Danke erst mal…
Das Stichwort Selection_Change war schon mal recht
hilfreich…
Ich hab dazu jetzt ein wenig gegoogelt aber bei der umsetzung
stell ich mich einfach zu doof an…
Also ich hab im VBA Editor ein Klassenmodul erstellt mit dem
Inhalt
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox („test“)
End Sub
rein Theoretisch stelle ich mir jetzt vor, dass ich bei jedem
Zellenwechsel eine msgbox erhalte, aber das tu ich nicht…
Was mach ich denn falsch? Kannst Du mir das noch ein wenig
genauer erklären wie ich das aktivieren kann?
Hallo Munich,
habe mal ein kleines Testmakro geschrieben, dass ein paar deiner Fragen beantwortet.
Private Sub Worksheet\_SelectionChange(ByVal Target As Excel.Range)
' Eingabe wird aktiviert, wenn Zelle im Bereich C5:G10 gewählt wird
If Target.Row \>= 5 And Target.Row = 3 And Target.Column
Gruß
Franz
1 „Gefällt mir“
klasse!
))
super, danke…
das hilft mir echt super weiter, auch wenn ich das mit dem
Mid(Adresse, 2, InStr(2, Adresse, „$“, 0) - 2)
nicht so 100%ig verstehe *g*
aber da komm ich vllt auch noch dahinter 
Hi Munich,
Adresse ist entweder $d$3 oder $ac$3,
Mit InStr(2, Adresse, „$“, 0) ergibt sich bei $d$3—>3 und bei $ac$3—>4
Wenn du von der 3 bzw 4 dann 2 abziehst mit:
InStr(2, Adresse, „$“, 0) - 2
bekommst du die „Länge“ des Buchstabenteils von Adresse.
und mit Mid(Adresse, 2, Länge)
erhälst du die Spaltenbezeichnung, also den Buchstabenteil von Adresse.
Siehe auch Hilfe zu Len und Mid.
Gruß
Reinhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]