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

Makro ausführen beim verlassen einer Zelle

Forumthread: Makro ausführen beim verlassen einer Zelle

Makro ausführen beim verlassen einer Zelle
02.12.2003 08:58:58
Kai
Hallo Leute,
ich habe schon seit einiger Zeit versucht eine Lösung für mein Problem zu finden, leider ohne Erfolg. Ich möchte gerne, dass ein Makro automatisch beim verlassen einer Zelle (wenn möglich mehrere Zellen) ausgeführt wird. Bisher muß ich immer auf einen Button klicken, was zwar gut funktioniert doch teilweise recht "lästig" ist da ich scrollen muß. Es muß doch eine Möglichkeit geben wenn ich in eine Zelle (z.B. A1) eine Zahl eingebe und in eine andere Zellen springe, das ein Makro ausgeführt wird. Ich bekomme das einfach nicht hin.

Vielen Dank für jeden Tip!
Kai
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro ausführen beim verlassen einer Zelle
02.12.2003 09:17:19
junny
Hai Kai,
hau mal folgenden Code zu deinem Makro rein. (bei mir mach ich dadurch alle Buchstaben GROSS) bastel es halt um

Gruss volker

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
'   alle Buchstaben Groß in einem bestimmten Bereich
Dim RaBereich As Range, RaZelle As Range
Application.EnableEvents = False
'   Bereich der Wirksamkeit
Set RaBereich = Range("I5:I319")
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Value = UCase(RaZelle.Value)
End If
Next RaZelle
Application.EnableEvents = True
Set RaBereich = Nothing
End Sub

Anzeige
AW: Makro ausführen beim verlassen einer Zelle
02.12.2003 09:54:57
Kai
Wer kann mir den das untere Makro so ändern, dass es ausgeführt wird wenn ich eine Zahl in den Bereich "AZ25:AZ44" eingebe. Anschließend soll die nächste Zelle aktiviert werden. Als Beispiel: Ich gebe eine "2" in die Zelle "AZ25" ein, dann soll das Makro ausgeführt werden und zum Schluß die Zelle "AW26" aktiviert werden. Bei Eingabe in die Zelle "AZ26" soll die Zelle "AW27" aktiv sein. (Immer eine Zeile nach unten und 3 Spalten nach vorn). Ich habe versucht eine Datei hochzuladen, leider kommt immer die Meldung "Ungültiger Dateiname", obwohl an "Muster.xls" eigentlich nichts auszusetzen ist. Wer mir (und vielen Fußballvereinen in ganz EUROPA) helfen möchte, kann sich die Musterdatei auch von meiner HP runterladen. (www.kadmo.de - Turnierplanung - Musterplan).
Ich wäre Euch wirklich sehr dankbar wenn es diesmal klappen würde.
Hier aber erst mal das Makro:


Sub GrpA()
' GrpA Makro
Range("BM31:BR35").Select
Selection.Sort Key1:=Range("BM31"), Order1:=xlDescending, Key2:=Range( _
"BR31"), Order2:=xlDescending, Key3:=Range("BO31"), Order3:=xlDescending _
, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
End Sub


Ich hoffe ich kann mein Problem mit Eurer Hilfe, endlich lösen.

Viele Grüße
Kai
Anzeige
AW: Makro ausführen beim verlassen einer Zelle
02.12.2003 10:02:57
Nike
Hi,
wie wäre es mit dem Abfangen einer Änderung:


Private Sub Worksheet_Change(ByVal Target As Range)
Target.Offset(1, 3).Select
End Sub


Wegen dem Hochladen, es gibt wohl bereits ne Datei, die so heißt,
also einfach mal in Muster0815.xls umbenennen, dann sollte es funken...

Bye

Nike
Anzeige
AW: Makro ausführen beim verlassen einer Zelle
02.12.2003 09:19:49
soendi
hai kai!
ein denkanstoss! -> das ist, wenn einfach die zelle ändert...


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
[dein Makro hier]
End Sub


spass!!
soendi
AW: Makro ausführen beim verlassen einer Zelle
02.12.2003 09:20:35
Nike
Hi,

mit diesem Code pro Tabellenblatt:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target <> rngTarget Then
'viel code...
'und am Ende
Set rngTarget = Target
End If
End Sub


Wobei du beim Öffnen der Datei eine Startvariable mit der ersten gewählten Zelle
belegen solltest um sie dann in diesem Code abzugleichen...


Private Sub Workbook_Open()
With Worksheets(1)
.Activate
.Range("A1").Select
End With
Set rngTarget = Worksheets(1).Range("A1")
End Sub


Nicht zu vergessen in einem Modul diese Variable Public zu definieren:
Public rngTarget As Range

Bye

Nike
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Automatisches Makro ausführen beim Verlassen einer Zelle in Excel


Schritt-für-Schritt-Anleitung

Um ein Makro automatisch beim Verlassen einer Zelle auszuführen, kannst du den folgenden VBA-Code verwenden. Dieser Code wird in das jeweilige Arbeitsblatt eingefügt, in dem das Makro ausgeführt werden soll.

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle im Projektfenster das gewünschte Arbeitsblatt aus.
  3. Kopiere und füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("AZ25:AZ44")) Is Nothing Then
        ' Dein Makro hier einfügen
        Target.Offset(1, 3).Select ' Nächste Zelle aktivieren
    End If
End Sub
  1. Schließe den VBA-Editor und teste das Makro, indem du eine Zahl in den Bereich AZ25:AZ44 eingibst.

Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass der Code im richtigen Arbeitsblatt eingefügt wurde und die Ereignisse aktiviert sind.
  • Fehler: Fehlermeldung beim Hochladen der Datei.

    • Lösung: Benenne die Datei um, z.B. in Muster0815.xls, und versuche erneut, die Datei hochzuladen.

Alternative Methoden

Falls du das Makro nicht über das Worksheet_Change-Ereignis ausführen möchtest, kannst du auch Workbook_SheetSelectionChange verwenden. Hier ist ein Beispiel:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Not Intersect(Target, Range("AZ25:AZ44")) Is Nothing Then
        ' Dein Makro hier einfügen
    End If
End Sub

Diese Methode aktiviert das Makro, wenn du in einen anderen Bereich wechselst.


Praktische Beispiele

Hier ist ein einfaches Beispiel für ein Makro, das die Eingabe in den Zellen AZ25:AZ44 überwacht und die nächste Zelle in der Reihe aktiviert:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("AZ25:AZ44")) Is Nothing Then
        Target.Offset(1, 3).Select ' Nächste Zelle aktivieren
    End If
End Sub

Wenn du beispielsweise 2 in AZ25 eingibst, wird AW26 aktiviert.


Tipps für Profis

  • Verwende Application.EnableEvents = False: Um zu verhindern, dass das Makro erneut ausgelöst wird, während es bereits läuft, kannst du diesen Befehl am Anfang deines Codes verwenden:
Application.EnableEvents = False
' Dein Code hier
Application.EnableEvents = True
  • Fehlerbehandlung: Füge Fehlerbehandlung hinzu, um Probleme während der Ausführung des Makros zu vermeiden:
On Error Resume Next
' Dein Code hier
On Error GoTo 0

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Makro nicht mehrmals ausgelöst wird? Verwende Application.EnableEvents = False zu Beginn deines Codes und setze es am Ende zurück auf True.

2. Kann ich mehrere Zellen gleichzeitig überwachen? Ja, indem du den Bereich in Intersect entsprechend anpasst, wie z.B. Range("AZ25:AZ44").

3. Was passiert, wenn ich das Makro in einer anderen Excel-Version benutze? Der Code sollte in den meisten Versionen von Excel funktionieren, ist jedoch am besten in Excel 2010 und höher getestet.

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