Supportnet Computer
Planet of Tech

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.

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 Befehlszeile

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.

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

Antwort 3 von Event

Hallo
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

Antwort 5 von coros

Hi rika,

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 Sub



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 6 von coros

Hi rika,

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 Sub


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 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

Antwort 8 von coros

Hi rika,

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.


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

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.

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.

Antwort 12 von Event

Hallo
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:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$40" Then Makroname1
If Target.Address = "$A$30" Then Makroname2
End Sub


oder

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 Sub


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.

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ß

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.

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: