Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Letzte aktive Zelle

Letzte aktive Zelle
07.01.2009 08:41:00
Manu
Hallo
wirklich komisch, aber zu meinem eigentlich trivialen Problem gibts nix.
ich will die letzte aktive Zelle auslesen in VBA in einem WoksheetChange Ereignis. ActiveCell.Address ist leider nur für die aktuelle Zelle gedacht.
Daran schliesst sich eine weitere Frage an: Wie kann ich den bei ActiveCell.Address zurückgegebenen Spaltenbuchstaben in eine Zahl umwandeln, dass ich den dann in der Funktion cells(a,b) verwenden kann.
Beste Grüsse
Manu
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte aktive Zelle
07.01.2009 09:19:00
Beverly
Hi Manu,
was meinst du mit "letzte" aktive Zelle? Es gibt doch nur eine aktive Zelle - die die gerade aktiv ist.
Zu Frage 2: ActiveCell.Row und ActiveCell.Column (Zeile und Spalte)


AW: Letzte aktive Zelle
07.01.2009 09:19:00
Hajo_Zi
Hallo Manu,
Du möchtest vom markierten Bereich die letzte Zelle unten rechts, unten links oder nur die Zeile?

Anzeige
AW: Letzte aktive Zelle
07.01.2009 10:52:05
Manu
Hallo
danke für die Antworten soweit.
Ich will ein Datum in einer Zelle überprüfen lassen. Wenn ich nach Eingabe aber aus der Zelle raus gehe durch Enter, Cursor etc., kann ich dies mit ActiveCEll.Address nicht mehr überprüfen., da die aktive Zelle dann nicht mehr unbedingt meine Datumszelle ist.
Danke fürs Mitdenken
Manu
Anzeige
AW: Letzte aktive Zelle
07.01.2009 11:00:00
Hajo_Zi
Hallo Manu,
warum gehst dDu dann aus der Zelle raus?
Möchtest Du vielleicht eine Eingabe prüfen?
Dann benutze Private Sub Worksheet_Change(ByVal Target As Range) unter der Tabelle und Target.
Gruß Hajo
Anzeige
AW: Letzte aktive Zelle
07.01.2009 11:54:54
Manu
Hoi Hajo
ja, ich will Prüfen, ob es ein Datum ist. Das Ereignis worksheetChange habe ich benutzt, aber wie komme ich an die Zelle ran, die geändert wurden ist bevor das Ereignis aufgerufen wurde
Gruss
Manu
AW: Letzte aktive Zelle
07.01.2009 12:03:00
Hajo_Zi
Hallo Manu,
das Stand in meinem Beitrag Target.
Gruß Hajo
Anzeige
AW: Letzte aktive Zelle
07.01.2009 13:26:09
Manu
Hallo Hajo,
okay, dann anders gefragt, wie bekomme ich die Zeile und Spalte für die veränderte Zelle in dem woerksheetchange ereignis. Bisher verwende ich ActiveCell.Address, aber durch Eingabebestätigung mit Enter verläst der Cursor die Zelle. Aber genau die Veränderte will ich ja prüfen, wobei ActiveCell.Address mir nur die nach der Eingabebestätigung aktive Zelle bringt.
Gruss
Manuel
Anzeige
AW: Letzte aktive Zelle
07.01.2009 13:28:00
Hajo_Zi
Hallo Manu,
es ist mir zu blöd das nochmal zu wiedeholen. Du willst Deinen Code nicht posten. Damit wir nicht die Lösung posten. Ich bin raus.
Gruß Hajo
AW: Letzte aktive Zelle
07.01.2009 13:45:14
Manu
Hi Hajo
tut mir leid, ich dachte es wäre selbst erklärend. Es soll besser werden. Wäre toll, wenn du nochmal antworten könntest:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim zeile As Long
Dim splitArray As Variant
splitArray = Split(ActiveCell.Address, "$")
zeile = CInt(splitArray(2))
MsgBox Cstr(zeile)
Das ist mein Code. In Variable Zeile will ich die letzte Zeile ausgeben, die geändert wurde.
Danke dir!
Gruss
Manu
Anzeige
AW: Letzte aktive Zelle
07.01.2009 14:02:00
Hajo_Zi
target.row
AW: Letzte aktive Zelle
07.01.2009 14:18:00
Manu
vielen vielen Dank. Das hilft!
GRuss
Manu
;
Anzeige
Anzeige

Infobox / Tutorial

Letzte aktive Zelle in Excel auslesen


Schritt-für-Schritt-Anleitung

Um die letzte aktive Zelle in Excel zu ermitteln, kannst Du das Worksheet_Change-Ereignis in VBA nutzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Projekt-Explorer das Arbeitsblatt aus, in dem Du die Änderung verfolgen möchtest.

  3. Füge den folgenden Code in das Arbeitsblattmodul ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim letzteZeile As Long
       Dim letzteSpalte As Long
    
       letzteZeile = Target.Row
       letzteSpalte = Target.Column
    
       MsgBox "Die letzte aktive Zelle ist: " & Cells(letzteZeile, letzteSpalte).Address
    End Sub
  4. Schließe den VBA-Editor und kehre zu Deinem Arbeitsblatt zurück.

  5. Ändere eine Zelle, um das Ereignis auszulösen. Ein Dialogfeld zeigt die Adresse der letzten aktiven Zelle an.


Häufige Fehler und Lösungen

  • Fehler: ActiveCell.Address gibt die falsche Zelle zurück.

    • Lösung: Verwende Target.Address, um die Adresse der Zelle zu bekommen, die die Änderung ausgelöst hat.
  • Fehler: Das Skript wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass das Ereignis im richtigen Arbeitsblattmodul platziert ist und dass die Makros aktiviert sind.

Alternative Methoden

Eine alternative Möglichkeit, die letzte aktive Zelle zu ermitteln, ist die Verwendung von Application.Caller in benutzerdefinierten Funktionen oder zur Analyse von spezifischen Zellbereichen. Hier ein Beispiel:

Function LetzteAktiveZelle() As String
    LetzteAktiveZelle = Application.Caller.Address
End Function

Du kannst diese Funktion in einer Zelle aufrufen, um die Adresse der Zelle, die die Funktion aufgerufen hat, zu erhalten.


Praktische Beispiele

Ein praktisches Beispiel könnte sein, dass Du ein Datum in einer Zelle prüfst. Hierzu kannst Du den Code so anpassen:

Private Sub Worksheet_Change(ByVal Target As Range)
    If IsDate(Target.Value) Then
        MsgBox "Das Datum ist gültig: " & Target.Value
    Else
        MsgBox "Bitte ein gültiges Datum eingeben."
    End If
End Sub

Dieser Code prüft, ob der eingegebene Wert ein Datum ist, und gibt eine entsprechende Meldung aus.


Tipps für Profis

  • Nutze die Target-Eigenschaft, um mehrere Zellen auf einmal zu bearbeiten.
  • Implementiere Fehlerbehandlungsroutinen (z.B. On Error Resume Next), um unerwartete Fehler zu vermeiden.
  • Teste Deinen Code gründlich in verschiedenen Szenarien, um sicherzustellen, dass er robust ist.

FAQ: Häufige Fragen

1. Wie kann ich die letzte aktive Zelle in einem anderen Arbeitsblatt auslesen?
Verwende Worksheets("SheetName").Cells(Target.Row, Target.Column).Address, um auf ein bestimmtes Arbeitsblatt zuzugreifen.

2. Was ist der Unterschied zwischen ActiveCell und Target im Worksheet_Change-Ereignis?
ActiveCell gibt die aktuelle Zelle zurück, während Target die Zelle(n) beschreibt, die durch die Änderung betroffen sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige