Supportnet / Forum / Tabellenkalkulation
Makro ausführen beim anklicken einer Zelle
Frage
Hallo!
Ich bitte um Eure Hilfe!
Problem:
Ich möchte, dass beim anklicken einer Zelle automatisch ein Makro ausgeführt wird.
Geht das in Excel 2003
Danke
rika
Antwort 1 von coros
Hi rika,
ja, das geht mit einem Worksheet_SelectionChange-Ereignis. Nachfolgend mal ein kleiner Beispielcode, der in das VBA Projekt des Tabellenblattes gehört, in dem beim Anklicken der Zellen ein Makro ausgeführt werden soll.
MsgBox "Hallo, ich bin eine Meldung"
müsste dann der Macroaufruf stehen.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich. Dann aber eventuell mit etwas konkreteren Angaben. Denn mit dem Hellsehen haben wir es hier alle nicht so. ;-)
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ja, das geht mit einem Worksheet_SelectionChange-Ereignis. Nachfolgend mal ein kleiner Beispielcode, der in das VBA Projekt des Tabellenblattes gehört, in dem beim Anklicken der Zellen ein Makro ausgeführt werden soll.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "Hallo, ich bin eine Meldung"
End Sub
Hier wird beim Anklicken irgend einer Zelle, eine Bildschirmmeldung ausgegeben. Anstelle der BefehlszeileMsgBox "Hallo, ich bin eine Meldung"
müsste dann der Macroaufruf stehen.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich. Dann aber eventuell mit etwas konkreteren Angaben. Denn mit dem Hellsehen haben wir es hier alle nicht so. ;-)
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von rika
Hollo Oliver!
Danke für deine schnelle Antwort. Genau diese Lösung brauche ich in ähnlicher Form.
Ich hätte doch deutlicher schreiben sollen, dass es sich nur um eine Zelle ( A40) bei mir handelt. Die restlichen Zellen wären davon nicht betroffen.
Gruß
rika
Danke für deine schnelle Antwort. Genau diese Lösung brauche ich in ähnlicher Form.
Ich hätte doch deutlicher schreiben sollen, dass es sich nur um eine Zelle ( A40) bei mir handelt. Die restlichen Zellen wären davon nicht betroffen.
Gruß
rika
Antwort 3 von Event
Hallo
Dann ergänze das Makro entsprechend:
Gruß
Dann ergänze das Makro entsprechend:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$A$40" Then Exit Sub
MsgBox "Hallo, ich bin eine Meldung"
End Sub Gruß
Antwort 4 von rika
Hallo Event!
Es ist super, dass du mir geholfen hast. Das ist die Lösung.
Es hat mir soviel Spass gemacht, dass ich es jetzt mit einer anderen Zelle in gleicher Tabelle (A30) auch noch probieren wollte. Es geht aber immer nur mit einer Zelle, oder hast du dafür auch eine Lösung.
Danke
rika
Es ist super, dass du mir geholfen hast. Das ist die Lösung.
Es hat mir soviel Spass gemacht, dass ich es jetzt mit einer anderen Zelle in gleicher Tabelle (A30) auch noch probieren wollte. Es geht aber immer nur mit einer Zelle, oder hast du dafür auch eine Lösung.
Danke
rika
Antwort 5 von coros
Hi rika,
dann muss der Code wie folgt ergänzt werden.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
dann muss der Code wie folgt ergänzt werden.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Address
If Target.Address <> "$A$40" Or Target.Address <> "$A$30" Then Exit Sub
MsgBox "Hallo, ich bin eine Meldung"
End SubMfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von coros
Hi rika,
STOP!!!, ich habe anstelle And Or geschrieben. Der Code lautet richtig
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
STOP!!!, ich habe anstelle And Or geschrieben. Der Code lautet richtig
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$A$40" And Target.Address <> "$A$30" Then Exit Sub
MsgBox "Hallo, ich bin eine Meldung"
End SubMfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 7 von rika
Hallo !
Das mit dem gleichen Makro habe ich jetzt verstanden und es funktioniert auch.
Wenn ich 2 verschiedene Makros 2 verschiedenen Zellen zuordnen möchte läuft´s nicht.
Diese Sache ist super interessant und würde mir sehr helfen.
Danke Euch
rika
Das mit dem gleichen Makro habe ich jetzt verstanden und es funktioniert auch.
Wenn ich 2 verschiedene Makros 2 verschiedenen Zellen zuordnen möchte läuft´s nicht.
Diese Sache ist super interessant und würde mir sehr helfen.
Danke Euch
rika
Antwort 8 von coros
Hi rika,
ich verstehe jetzt ehrlich gesagt nicht, was Du mit
meinst. Da musst Du wohl noch mal eine Erklärung nachlegen. Aber bitte verständlich. :-)
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ich verstehe jetzt ehrlich gesagt nicht, was Du mit
Zitat:
Wenn ich 2 verschiedene Makros 2 verschiedenen Zellen zuordnen möchte läuft´s nicht.
Wenn ich 2 verschiedene Makros 2 verschiedenen Zellen zuordnen möchte läuft´s nicht.
meinst. Da musst Du wohl noch mal eine Erklärung nachlegen. Aber bitte verständlich. :-)
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 9 von JoeKe
Hallo,
so vielleicht:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then MsgBox "Hallo, ich bin eine Meldung 1"
If Target.Address = "$A$30" Then MsgBox "Hallo, ich bin eine Meldung 2"
End Sub
MfG
JöKe
so vielleicht:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then MsgBox "Hallo, ich bin eine Meldung 1"
If Target.Address = "$A$30" Then MsgBox "Hallo, ich bin eine Meldung 2"
End Sub
MfG
JöKe
Antwort 10 von rika
Hallo Jöke!
Deine Lösung kommt noch am nächsten hin.
Ich wollte aber anstatt der MSG wie unten Makros einfügen.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then
Makro1 ausführen
If Target.Address = "$A$30" Then
Makro2 ausführen
Sub End
Vielleicht kannst du mir helfen.
Gruß
rika
Info für Coros!
Ich habe 2 Zellen, denen ich jeweils ein Makro zuordnen möchte einmal Makro1 und der anderen Zelle Makro2.
Deine Lösung kommt noch am nächsten hin.
Ich wollte aber anstatt der MSG wie unten Makros einfügen.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then
Makro1 ausführen
If Target.Address = "$A$30" Then
Makro2 ausführen
Sub End
Vielleicht kannst du mir helfen.
Gruß
rika
Info für Coros!
Ich habe 2 Zellen, denen ich jeweils ein Makro zuordnen möchte einmal Makro1 und der anderen Zelle Makro2.
Antwort 11 von coros
Hi rika,
Du musst anstelle des Textes "Makro1 ausführen" den Makronamen hinschreiben, dann sollte es funktionieren.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Du musst anstelle des Textes "Makro1 ausführen" den Makronamen hinschreiben, dann sollte es funktionieren.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 12 von Event
Hallo
Gruß
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$A$40" And Target.Address <> "$A$30" Then Exit Sub
If Target.Address = "$A$40" Then Makro1
If Target.Address = "$A$30" Then Makro2
End Sub
sub Makro1()
´Rem wird ausgefführt wenn Target= $A$40
End Sub
sub Makro2()
´Rem wird ausgefführt wenn Target= $A$30
End Sub
Gruß
Antwort 13 von coros
Hi, ich noch mal,
noch etwas vergessen. Entweder schreibst Du die If-Anweisung und den Makronamen in eine Zeile oder Du musst nach dem Makronamen eine Zeile einfügen und dort dann "End If" hinschreiben, damit der Code weiß, dass die Abfrage dort zu ende ist. Beispiel:
oder
Ich hoffe, Du verstehst was ich meine.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
noch etwas vergessen. Entweder schreibst Du die If-Anweisung und den Makronamen in eine Zeile oder Du musst nach dem Makronamen eine Zeile einfügen und dort dann "End If" hinschreiben, damit der Code weiß, dass die Abfrage dort zu ende ist. Beispiel:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then Makroname1
If Target.Address = "$A$30" Then Makroname2
End Suboder
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then
Makroname1
End If
If Target.Address = "$A$30" Then
Makroname2
End If
End SubIch hoffe, Du verstehst was ich meine.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 14 von JoeKe
Hallo rika,
so:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then Application.Run "Makro1"
If Target.Address = "$A$30" Then Application.Run "Makro2"
End Sub
sub Makro1()
MsgBox "Hallo, ich bin eine Meldung 1"
End Sub
sub Makro2()
MsgBox "Hallo, ich bin eine Meldung 2"
End Sub
Gruß
JöKe
@Event,
das:
If Target.Address <> "$A$40" And Target.Address <> "$A$30" Then Exit Sub
muss doch gar nicht sein. ;-)
Gruß
so:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then Application.Run "Makro1"
If Target.Address = "$A$30" Then Application.Run "Makro2"
End Sub
sub Makro1()
MsgBox "Hallo, ich bin eine Meldung 1"
End Sub
sub Makro2()
MsgBox "Hallo, ich bin eine Meldung 2"
End Sub
Gruß
JöKe
@Event,
das:
If Target.Address <> "$A$40" And Target.Address <> "$A$30" Then Exit Sub
muss doch gar nicht sein. ;-)
Gruß
Antwort 15 von coros
Hi Jöke,
warum verwendest Du den Befehl "Application.Run "?Das sollte auch ohne gehen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
warum verwendest Du den Befehl "Application.Run "?Das sollte auch ohne gehen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 16 von JoeKe
upps nich aufgepasst.
Antwort 17 von JoeKe
stimmt. ich neige gern dazu eindeutige Befehle zuverwenden und verschwende sie deshalb oft. Ist ein Manko an dem ich noch arbeiten muss.
Gruß Jörg
Gruß Jörg
Antwort 18 von rika
Hallo Ihr drei
, die mir geholfen haben.
Die VBA Programmierung macht mir unheimlich Spass. Ihr seit Super und habt mir sehr geholfen, dafür möchte ich mich sehr herzlich bei Euch bedanken.
tschüssssssss
Bis zum nächsten Mal
rika
, die mir geholfen haben.
Die VBA Programmierung macht mir unheimlich Spass. Ihr seit Super und habt mir sehr geholfen, dafür möchte ich mich sehr herzlich bei Euch bedanken.
tschüssssssss
Bis zum nächsten Mal
rika

