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

Forumthread: aktive Zelle eine Zeile tiefer

aktive Zelle eine Zeile tiefer
Jürgen
Hallo liebe Helferleins,
habe schon die Suche bemüht und das gefunden:
ACTIVECELL.Offset(1, 0).Select
funktioniert an für sich schon, aber...
in dem Blatt in dem ich das anwenden will ist zur zeit der Makroausführung immer ein Autofilter aktiv.
Sprich es sind z.B. die zeilen 2,3,4 ud 5 ausgeblendet.
in zeilen 1 + 6 sind die werte die ich kopieren möchte. wenn ich in zeile 1 bin und obigen befehl ausführe
springt er in zeile 2. nicht das was ich will .
hat einer eine Idee ?
Danke im voraus
Gruß Jürgen
Anzeige

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

Betreff
Benutzer
Anzeige
AW: aktive Zelle eine Zeile tiefer
17.11.2009 12:27:48
welga
Hallo versuch es mal damit:
Dim a As Boolean
a = False
Do Until a = True
ActiveCell.Offset(1, 0).Activate
If Rows(ActiveCell.Row).Hidden = False Then a = True
Loop
Gruß
welga
AW: aktive Zelle eine Zeile tiefer
17.11.2009 12:34:07
Jürgen
Hallo welga,
na da sage ich mal Danke.
Genau das was ich wollte, hatte schon Angst die Frage wäre schlecht formuliert.
Sage nur Merci.
Gruß Jürgen
Anzeige
AW: aktive Zelle eine Zeile tiefer
17.11.2009 12:27:59
welga
Hallo versuch es mal damit:
Dim a As Boolean
a = False
Do Until a = True
ActiveCell.Offset(1, 0).Activate
If Rows(ActiveCell.Row).Hidden = False Then a = True
Loop
Gruß
welga
Autofilter : Nächste/Vorherige Zelle aktivieren
17.11.2009 12:46:26
NoNet
Hallo Jürgen,
wenn alle Zelle der Spalte gefüllt sind (zumindest die relevante Spalte !), dann könnte man das evtl. so lösen :
Sub AutofilterNaechsteZelle()
Dim rngZelle As Range, rngBereich As Range, bolAktiv As Boolean
Set rngBereich = Intersect(ActiveCell.EntireColumn, _
ActiveCell.Resize(Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row - _
ActiveCell.Row + 1), Cells.SpecialCells(xlCellTypeVisible))
For Each rngZelle In rngBereich
If bolAktiv = True Then
bolAktiv = False
rngZelle.Select
'MsgBox ActiveCell.Address 'Adresse der Zelle ausgeben
Else
If rngZelle.Address = ActiveCell.Address Then
bolAktiv = True
End If
End If
Next
End Sub

Sub AutofilterVorherigeZelle()
Dim rngZelle As Range, rngBereich As Range, rngAlteZelle As Range
Dim bolAktiv As Boolean
Set rngBereich = Intersect(ActiveCell.EntireColumn, _
ActiveCell.End(xlUp).Resize(ActiveCell.Row - ActiveCell.End(xlUp).Row + 1), _
Cells.SpecialCells(xlCellTypeVisible))
Set rngAlteZelle = ActiveCell
For Each rngZelle In rngBereich
If bolAktiv = True Then
bolAktiv = False
rngAlteZelle.Select
'MsgBox ActiveCell.Address 'Adresse der Zelle ausgeben
Else
If rngZelle.Address = ActiveCell.Address Then
bolAktiv = True
Else
Set rngAlteZelle = rngZelle
End If
End If
Next
If bolAktiv Then
rngAlteZelle.Select
'MsgBox ActiveCell.Address 'Adresse der Zelle ausgeben
End If
End Sub
Der Vorteil : Es werden tatsächlich nur die sichtbaren Zellen durchlaufen, wodurch die Performance bei grossen Listen steigt.
Gruß, NoNet
Anzeige
AW: Autofilter : Nächste/Vorherige Zelle aktivieren
17.11.2009 13:06:10
Jürgen
Danke
auch an Dich !!
Gruß Jürgen
;

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
Anzeige

Infobox / Tutorial

Aktive Zelle eine Zeile tiefer bei Filter in Excel


Schritt-für-Schritt-Anleitung

Um die aktive Zelle eine Zeile tiefer auszuwählen, ohne dabei die vom Autofilter ausgeblendeten Zeilen zu berücksichtigen, kannst du folgenden VBA-Code verwenden:

Dim a As Boolean
a = False
Do Until a = True
    ActiveCell.Offset(1, 0).Activate
    If Rows(ActiveCell.Row).Hidden = False Then a = True
Loop
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro aus, während sich die gewünschte Zelle in der aktiven Auswahl befindet.

Häufige Fehler und Lösungen

  • Fehler: Die aktive Zelle springt in eine ausgeblendete Reihe.

    • Lösung: Stelle sicher, dass der oben angegebene Code korrekt implementiert ist und die aktive Zelle sich zu Beginn in einer sichtbaren Zeile befindet.
  • Fehler: Das Makro funktioniert nicht bei großen Datenmengen.

    • Lösung: Überprüfe die Sichtbarkeit der Zellen und stelle sicher, dass die Abfrage im Code korrekt die sichtbaren Zellen berücksichtigt.

Alternative Methoden

Eine weitere Methode, um zur nächsten sichtbaren Zelle zu gelangen, ist die Verwendung der Intersect-Funktion. Hier ist ein Beispiel, wie du das umsetzen kannst:

Sub AutofilterNaechsteZelle()
    Dim rngZelle As Range, rngBereich As Range, bolAktiv As Boolean
    Set rngBereich = Intersect(ActiveCell.EntireColumn, _
        ActiveCell.Resize(Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row - _
        ActiveCell.Row + 1), Cells.SpecialCells(xlCellTypeVisible))

    For Each rngZelle In rngBereich
        If bolAktiv = True Then
            bolAktiv = False
            rngZelle.Select
        Else
            If rngZelle.Address = ActiveCell.Address Then
                bolAktiv = True
            End If
        End If
    Next
End Sub

Praktische Beispiele

Nehmen wir an, du hast eine Tabelle mit gefilterten Daten und möchtest zur nächsten sichtbaren Zelle wechseln:

  1. Platziere den Cursor in einer beliebigen Zelle innerhalb der gefilterten Liste.
  2. Führe das Makro AutofilterNaechsteZelle aus.
  3. Du wirst sehen, dass die aktive Zelle nun auf die nächste sichtbare Zelle springt.

Diese Technik kann besonders nützlich sein, wenn du mit großen Datensätzen arbeitest und nur die sichtbaren Daten verarbeiten möchtest.


Tipps für Profis

  • Nutze die Cells.SpecialCells(xlCellTypeVisible), um die Sichtbarkeit von Zellen effizient zu prüfen.
  • Wenn du oft mit Daten arbeitest, die gefiltert sind, erstelle eine benutzerdefinierte Schaltfläche in der Symbolleiste, um den Zugriff auf deine Makros zu erleichtern.
  • Experimentiere mit der Kombination von verschiedenen VBA-Funktionen, um deine Arbeitsabläufe weiter zu optimieren.

FAQ: Häufige Fragen

1. Frage
Was kann ich tun, wenn das Makro nicht funktioniert?
Antwort: Überprüfe, ob der Code korrekt implementiert wurde und ob die aktive Zelle tatsächlich sichtbar ist.

2. Frage
Kann ich diese Methoden in allen Excel-Versionen verwenden?
Antwort: Ja, die beschriebenen VBA-Methoden funktionieren in den meisten modernen Excel-Versionen, z.B. Excel 2016, 2019 und Office 365.

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