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]
| #1 |
MOF User
Registrierung: 20.11.2013 Karma:
| 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� |
|
| #2 |
MOF Guru
Registrierung: 17.05.2008 | benutze 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 |
|
| #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� |
|
| #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?? 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 __________________ Gru� Ge�ndert von VBAFirst (28.08.2017 um 10:01 Uhr). |
|
| #5 |
Threadstarter MOF User
Registrierung: 20.11.2013 Karma: | Okay, hat geklappt! Es musste nur wie folgt ge�ndert werden. 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� |
|
| #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 __________________
Gru� |
|
| #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� |
|
| #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. __________________ Gru� |
|