Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1240to1244
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige