Excel VBA Makro ausführen wenn Zelle angeklickt wird

Hallo Leute,

ich bin ein Anfänger auf dem Gebiet Excel/VBA und habe folgendes Problem.
Wie starte ich beim anklicken einer Zelle ein Makro. Also wie kann ich z.B.
beim anklicken einer Zelle den Inhalt einer anderen Zelle löschen ?

mfg und Danke

Hallo Kay,

Post by Kay Thoma
ich bin ein Anfänger auf dem Gebiet Excel/VBA und habe folgendes Problem.
Wie starte ich beim anklicken einer Zelle ein Makro. Also wie kann ich z.B.
beim anklicken einer Zelle den Inhalt einer anderen Zelle löschen ?

dazu verwendet man verschiedene Ereignisse, die alle mögliche Handlungen überwachen.
Wähle im Codemodul der Tabelle im linken Dropdoenfeld den Eintrag 'Worksheet'.
Daraufhin wird das Codegerüst des SelectionChange-Ereignis erstellt.
Im rechten Dropdownfeld befindet sich eine Auflistung aller zur Verfügung stehenden Ereignisse.
Bei Klick auf ein Ereignbis wird das Codegerüst im Codeblatt erstellt.

Um den Wechsel einer Zelle zu überwachen verwendet man das SelectionChange-Ereignis.
Angenommen, du willst nur die Zelle A1 überwachen, dann verwende folgenden Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
Range("F1").ClearContents
End If
End Sub

Wenn die Zelle A1 angeklickt wird, wird der Inhalt der Zelle F1 gelöscht.

--
Mit freundlichen Grüßen
Melanie Breden

_____________________
[Microsoft MVP für Excel]

25.08.2017, 10:26
  #1


MOF User

 

Registrierung: 20.11.2013

Karma:

Excel2010 - Makro ausf�hren lassen bei Klick auf Zeile, im Makro entsprechend Bereich verschieben

Hallo zusammen,

ich versuche gerade folgendes umzusetzen jedoch wei� ich ab hier nicht mehr weiter.

Gibt es eine M�glichkeit das die Bez�ge des Makros um den Bereich einfach verschoben werden in jene Zeile in Excel in die man klickt?

Aktuell l�uft es auf die Bez�ge der Zeile 3. Ich ben�tige nun aber z.B. die Zeile 10 mit den Bez�gen aus der Tabelle. Gibt es daher einen Code Zusatz der bei Klick auf eine andere Zeile entsprechend die Bez�ge versch�et nach dorthin?

Code:


Sub test() Dim olApp As Object Dim olOldBody As String Set olApp = CreateObject("Outlook.Application") With olApp.CreateItem(0) .GetInspector.Display olOldBody = .htmlBody .To = "test" .Subject = "TEXT" & " - " & Range("AK3") & " // TEXT >>> " & Range("J3") & " <<< TEXT // " _ & Format(Range("L3"), "#,##0") & " MWh // " & Range("G3") & " - " & Range("H3") & " // " & _ Range("I3") & " // " & Range("C3") & EMPFAENGER .htmlBody = olOldBody End With End Sub

__________________

Gru�
VBAFirst

 

25.08.2017, 12:14
  #2


MOF Guru

 

Registrierung: 17.05.2008

benutze
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf Deine Tabelle, Code ins rechte Fenster kopieren, VBA Editor schlie�en.
Das Makro wird automatisch gestartet.
Der Code wirkt nur in dieser Tabelle.

Code:


Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub

was Du machen willst kennst Du ganz genau.

Ich lade keine Datei mit dem Namen Test... herunter.

__________________

Signatur in jedem Beitrag
Bitte Version angeben. Bei keiner Angabe gehe ich von meinen Angaben aus.
Betriebssystem: Windows 10 - 64 Bit, Office 2021 - 32 Bit.
Fragen werden im Forum beantwortet, nicht per PN.
Ich bewerte keine Beitr�ge mehr, da keine R�ckmeldung.

 

25.08.2017, 13:50
  #3


MOF Meister

 

Registrierung: 02.02.2016

Karma:

Moin,

das Ereignis Selection_Change liefert mit Target.Row und Target.Column die Zelle, die angeklickt wurde. Daraus kannst Du die passenden Ranges bauen, zB

Code:


Range(Target.Row, "C")

anstatt

__________________

Gru�
Ralf

 

28.08.2017, 09:52
  #4

Threadstarter 


MOF User

 

Registrierung: 20.11.2013

Karma:

Danke f�r Eure Hilfe dazu.

Ich habe den Code in der Datei umgesetzt. Bezieht sich nun auf die "Tabelle1" ausschlie�lich.

Allerdings hakt es beim dem Bauen der Range noch. Wie m�sste ich die Ranges anlegen damit genau die Zelle gezielt getroffen werden kann?

Es soll anstatt C3 nun z.B. nun nicht die Zeile 3 sondern 23 genommen werden.

Der Code sieht aktuelle wie folgt aus, funktioniert aber noch nicht.

M�sste zur Range(Target.row, "C") noch ein Range(Target.Column, "?" verkn�pft werden??
Aktuell erhalte ich
Methode 'Range' Objekt '_Worksheet' fehlgeschlagen

Code:


Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim olApp As Object Dim olOldBody As String Set olApp = CreateObject("Outlook.Application") With olApp.CreateItem(0) .GetInspector.Display olOldBody = .htmlBody .To = "test" .Subject = "TEXT" & " - " & Range(Target.Row, "AK") & " // TEXT >>> " & Range(Target.Row, "J") & " <<< TEXT // " _ & Format(Range(Target.Row, "L"), "#,##0") & " MWh // " & Range(Target.Row, "G") & " - " & Range(Target.Row, "H") & " // " & _ Range(Target.Row, "I") & " // " & Range(Target.Row, "C") .htmlBody = olOldBody End With End Sub

Gr��e
Henry

__________________

Gru�
VBAFirst

Ge�ndert von VBAFirst (28.08.2017 um 10:01 Uhr).

 

28.08.2017, 10:23
  #5

Threadstarter 


MOF User

 

Registrierung: 20.11.2013

Karma:

Okay, hat geklappt! Es musste nur wie folgt ge�ndert werden.
Bsp: Range("C" & Target.Row)

Mit diesem Code funktioniert es nun wie es soll. Danke Euch

Code:


Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim olApp As Object Dim olOldBody As String Set olApp = CreateObject("Outlook.Application") With olApp.CreateItem(0) .GetInspector.Display olOldBody = .htmlBody .To = "test" .Subject = "TEXT" & " - " & Range("AK" & Target.Row) & " // TEXT >>> " & Range("J" & Target.Row) & " <<< TEXT // " _ & Format(Range("L" & Target.Row), "#,##0") & " MWh // " & Range("G" & Target.Row) & " - " & Range("H" & Target.Row) & " // " & _ Range("I" & Target.Row) & " // " & Range("C" & Target.Row) .htmlBody = olOldBody End With End Sub

__________________

Gru�
VBAFirst

 

28.08.2017, 12:36
  #6

Threadstarter 


MOF User

 

Registrierung: 20.11.2013

Karma:

G�be es eigentlich eine M�glichkeit das ich diesen Code ebenfalls als Makro erstellen kann, so dass es als Addin verwendet werden k�nnte?

Quasi Bei Addin Aktivierung in der Men�leiste bezieht sich das SelectionChange auf die momentan angezeigte Tabelle??

Gr��e
Henry

__________________

Gru�
VBAFirst

 

28.08.2017, 14:48
  #7


MOF Meister

 

Registrierung: 02.02.2016

Karma:

Zitat:

so dass es als Addin verwendet werden k�nnte?

Das sollte mich wundern. Excel selbst ruft beim Eintritt des Ereignisses die Prozedur auf, die im zugeh�rigen Tabellenblatt hinterlegt ist. Wie da ein Umbiegen auf ein AddIn ablaufen sollte, ist mir r�tselhaft, lasse mich aber gern �berraschen.

__________________

Gru�
Ralf

 

29.08.2017, 16:03
  #8

Threadstarter 


MOF User

 

Registrierung: 20.11.2013

Karma:

Ja verst�ndlich. Ich habe mir jetzt einen Workaround geschaffen in dem ich mit einem anderen Makro als Addin einfach den Tabelleninhalt in die andere Datei lade. Klappt super.
Danke an alle f�r die Unterst�tzung!

__________________

Gru�
VBAFirst

 

Toplist

Neuester Beitrag

Stichworte