Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro bei Zellenwechsel starten

Forumthread: Makro bei Zellenwechsel starten

Makro bei Zellenwechsel starten
Karsten
Hallo,
ich möchte, wenn ich mit der akt. Zelle nach eins nach rechts gehe Makro1 auslösen und wenn ich nach links gehe Makro2.
Ich weiß, es klingt ziemlich unbrauchbar, aber ich brauche es nur für bestimmte Zellen.
Vielleicht kann mir jemand mit einem VBA-Code weiterhelfen.
Danke.
Gruß
Karsten.
Anzeige
Makro bei Zellenwechsel LINKS/RECHTS starten
23.12.2011 10:37:17
NoNet
Hallo Karsten,
das funktioniert folgendermassen :
Kopiere diesen Code in ein allgemeines Modul (z.B. "Modul1") :
Public rngAlteZelle As Range
Kopiere diesen Code in das Klassenmodul des betreffenden Tabellenblattes (z.B. "Tabelle1") im VBA-Editor :
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If rngAlteZelle Is Nothing Then
Set rngAlteZelle = ActiveCell
Else
If ActiveCell.Column  rngAlteZelle.Column Then
Set rngAlteZelle = ActiveCell
Makro2
End If
End If
End Sub
Sub Makro1()
MsgBox "Zellzeiger nach LINKS bewegt !", , "Makro1"
End Sub
Sub Makro2()
MsgBox "Zellzeiger nach RECHTS bewegt !", , "Makro2"
End Sub
Gruß, NoNet
Anzeige
AW: Makro bei Zellenwechsel LINKS/RECHTS starten
23.12.2011 10:57:23
Karsten
Hallo NoNet,
danke, es funktioniert. Ich hab trotzdem noch ein Problem. Wenn ich mehrere Zellen überspringe (nur mit der Maus möglich), wird der Code auch ausgelöst. Wenn sich das verhindern ließe, wäre schön. Ich weiß, ich hätte es gleich zum Anfang mit reinschreiben sollen. Vielleicht kannst du es trotzdem noch machen.
Danke.
Gruß
Karsten
Anzeige
Codeänderungen : LINKS: -1 / RECHTS : 1
23.12.2011 11:10:45
NoNet
Hallo Karsten,
hier der geänderte Code zum Überprüfen, ob direkt eine Zelle in der Spalte LINKS / RECHTS neben der vorherigen Zelle ausgewählt wurde :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If rngAlteZelle Is Nothing Then
Set rngAlteZelle = ActiveCell
Else
If ActiveCell.Column - rngAlteZelle.Column = -1 Then
Set rngAlteZelle = ActiveCell
Makro1
ElseIf ActiveCell.Column - rngAlteZelle.Column = 1 Then
Set rngAlteZelle = ActiveCell
Makro2
End If
End If
End Sub
Salut, NoNet
Anzeige
AW: Codeänderungen : LINKS: -1 / RECHTS : 1
23.12.2011 11:26:26
Karsten
Hallo NoNet,
nochmal danke, es läuft.
Gruß
Karsten
AW: Codeänderungen : LINKS: -1 / RECHTS : 1
25.12.2011 10:09:59
Karsten
Hallo NoNet, frohe Weihnachten,
nun dachte ich schon es ist beendet, aber jetzt ist mir doch noch was aufgefallen.
Wenn ich mit der Maus eine andere Zelle anwähle, mehr als eine Spalte, dann wird sich trotzdem die alte Zelle "gemerkt". Wenn ich dann eine Spalte weiter vor- oder zurückgehe, wird der Makro1 oder 2 nicht mehr angesteuert. Dieser Sprung müsste irgendwie die alte Zelle "entwerten" und die Neue zur neuen alten Zelle machen.
z.B. Wenn du jetzt nach G1 gehst und dann eine Zelle nach rechts oder links, wird G1 nicht als alte Zelle erkannt.
https://www.herber.de/bbs/user/78087.xls
Falls du das noch irgendwie, irgendwann hinbekommst - danke.
Gruß
Karsten
Anzeige
Anpassung
25.12.2011 11:38:53
Matthias
Hallo Karsten
Vielleicht reicht Dir das ja dann so
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If rngAlteZelle Is Nothing Then
Set rngAlteZelle = ActiveCell
Else
If ActiveCell.Column - rngAlteZelle.Column  Then
Set rngAlteZelle = ActiveCell
Makro1
ElseIf ActiveCell.Column - rngAlteZelle.Column >= 1 Then
Set rngAlteZelle = ActiveCell
Makro2
End If
End If
End Sub


Allerdings hatte Nonet das dazugeschrieben:
Zitat:
hier der geänderte Code zum Überprüfen, ob direkt eine Zelle in der Spalte LINKS / RECHTS neben der vorherigen Zelle ausgewählt wurde
Das war auch in Deiner ursprünglichen Farge so von Dir gewollt
schöne Feiertage
Gruß Matthias
Anzeige
AW: Anpassung
26.12.2011 16:43:44
Karsten
Hallo Mattias,
danke, deine Variante meinte ich auch nicht. Hab es aber zwischenzeitlich so hinbekommen, wie ich es meinte und genauso brauche ich es. Sorry nochmal, wenn ich mich wiedermal nicht richtig ausgequetscht habe.
Gruß
Karsten
If rngAlteZelle Is Nothing Then
Set rngAlteZelle = ActiveCell
Else
If ActiveCell.Column - rngAlteZelle.Column = -1 Then
Set rngAlteZelle = ActiveCell
Makro1
End If
If ActiveCell.Column - rngAlteZelle.Column = 1 Then
Set rngAlteZelle = ActiveCell
Makro1
End If
If ActiveCell.Column rngAlteZelle.Column + 1 Then
Set rngAlteZelle = ActiveCell
End If
End If
End If
Anzeige
und das funktioniert wirklich ?
26.12.2011 20:20:05
Matthias
Hallo
Ich würde denken
1 x End If ist zuviel
und bei beiden If-Abfragen Makro1 ausführen war wohl nicht das was Du wolltest, oder ? ;o)
Gruß Matthias
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige