Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1280to1284
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

Nur die sichtbaren Zellen markieren

Nur die sichtbaren Zellen markieren
15.10.2012 11:03:50
sadko
Hallo zusammen!
Ich möchte in der Tabelle nur die Zellen markieren lassen, die nach der Aktivierung des Daten-Filters zu sehen sind. Im Anhang habe ich meine fehlerhafte Funktion, die ein paar Zellen mehr markiert als nötig und nicht mit allen Filter-Kombinationen funktioniert.
Danke für die Korrektur-Vorschläge! ;-)
Die Datei: https://www.herber.de/bbs/user/82126.zip

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nur die sichtbaren Zellen markieren (Code)
15.10.2012 11:07:43
sadko
Option Explicit
Sub TransferData()
Dim ThisRow As Long
Dim EndRow As Long
Dim Zelle As Range
Dim Bereich As Range
If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then
Set Bereich = Tabelle1.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
With Bereich
EndRow = .Rows.Count
For ThisRow = 2 To EndRow
For Each Zelle In Bereich
Zelle.Cells(ThisRow).Interior.ColorIndex = 15
Next Zelle
Next ThisRow
End With
End If
End Sub

Sub Reset()
Dim ThisRow As Long
Dim EndRow As Long
Dim Zelle As Range
Dim Bereich As Range
If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then
Set Bereich = Tabelle1.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
With Bereich
EndRow = .Rows.Count
For ThisRow = 2 To EndRow
For Each Zelle In Bereich
Zelle.Cells(ThisRow).Interior.ColorIndex = 0
Next Zelle
Next ThisRow
End With
End If
End Sub

Anzeige
AW: Nur die sichtbaren Zellen markieren
15.10.2012 11:15:54
mäxl
Hi
reicht Dir das auch so...
Option Explicit
Sub TransferData()
Dim rng As Range
Set rng = Range("A8:C" & Cells(Rows.Count, 1).End(xlUp).Row)
rng.SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 15
End Sub
Sub Reset()
Columns("A:C").Interior.ColorIndex = 0
End Sub
gruß

Nur die sichtbaren Zellen markieren
15.10.2012 11:20:34
sadko
Hallo mäxl!
Deine Lösung ist zwar elegant aber die ist starr. Die Tabelle wird mit der Zeit länger und die Markierung brauche ich nur dann, wenn bestimmte Filter-Kriterien erfüllt sind.
Trotzdem Danke!

AW: Nur die sichtbaren Zellen markieren
15.10.2012 11:24:22
mäxl
Hi
was ist star?
^^ teste es mal
gruß

Anzeige
Nur die sichtbaren Zellen markieren
15.10.2012 11:35:29
sadko
Hallo mäxl!
Das zum Beispil:

A8:C

AW: Nur die sichtbaren Zellen markieren
15.10.2012 11:44:51
mäxl
Hi
was hat das mit " die Liste wird länger" zu schaffen. ;)
das wäre "breiter"
Option Explicit
Sub TransferData()
With ActiveSheet
If .AutoFilterMode Then
If .FilterMode Then
.AutoFilter.Range.Interior.ColorIndex = 15
End If
End If
End With
End Sub
Sub Reset()
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilter.Range.Interior.ColorIndex = 0
End If
End Sub
es wird nur mehr markiert wenn ein Filter aktiv ist.
und dein Bereich ist vollautomatisiert.
gruß

Anzeige
Nur die sichtbaren Zellen markieren
15.10.2012 12:00:35
sadko
Hmmm,
na, dann habe ich mich falsch ausgedrÜckt... ;-)
Könntest Du bitte kurz testen, ob nur nach der Filter-Aktivierung die Markierung auch nicht funktioniert?! Und die Tabellen-Überschrift darf nicht markiert werden. Ich will später nur auf die Inhalte der Tabellenzellen zugreifen*!
PS: * wie das geht, weiß ich noch nicht... ;-)

AW: Nur die sichtbaren Zellen markieren
15.10.2012 12:27:51
mäxl
Hi
hier mal was zum Testen..., ich habe die ganze Geschichte mal ein wenig ausgelagert.
Option Explicit
Sub TransferData()
If check_Filter = 2 Then myRange.Interior.ColorIndex = 15
End Sub
Sub Reset()
If check_Filter > 0 Then myRange.Interior.ColorIndex = 0
End Sub
Function myRange() As Range
With ActiveSheet
Set myRange = .AutoFilter.Range.Resize(.AutoFilter.Range.Rows.Count - 1).Offset(1)
End With
End Function
Sub dein_Inhalt()
Dim rngCell As Range
If check_Filter = 2 Then
For Each rngCell In myRange.SpecialCells(xlCellTypeVisible)
MsgBox rngCell.Address(0, 0) & " mit Inhalt: " & rngCell.Value
Next
Else
MsgBox "kein Filter gesetzt"
End If
End Sub
Function check_Filter() As Byte
With ActiveSheet
If .AutoFilterMode Then
check_Filter = 1 'zumindest Autofilter ist aktiv
If .FilterMode Then
check_Filter = 2 'und Filter gesetzt
End If
End If
End With
End Function
gruß

Anzeige
Nur die sichtbaren Zellen markieren
15.10.2012 13:57:50
sadko
Die Msg-Boxen gehen nicht auf. Und wie bekomme ich die Anzahl von Zeilen und Spalten im gefilterten Bereich. So, wie ich mir gedacht habe geht leider nicht:

myRange.SpecialCells(xlCellTypeVisible).Rows.Count
myRange.SpecialCells(xlCellTypeVisible).Columns.Count
Danke!

AW: Nur die sichtbaren Zellen markieren
15.10.2012 14:11:13
mäxl
Hi
wie ? gehen nicht auf?
die Sub gehört einfach aufgerufen.
gefilterte Spalten abfragen ist sinnlos, das sind immmer alle Spalten!
Rest ist in der Mappe
https://www.herber.de/bbs/user/82132.xlsm
gruß

Anzeige
korr. rows.count
15.10.2012 14:21:26
mäxl
Hi
gerade gesehen die Areas gehoren dabei abgefragt.
Private Sub cmd_rows_Click()
Dim rng_Row As Range
For Each rng_Row In myRange.SpecialCells(xlCellTypeVisible).Rows.Areas
i = i + rng_Row.SpecialCells(xlCellTypeVisible).Rows.Count
Next
MsgBox i & " Filterzeilen"
End Sub
so müsste die Zeilen korr. angezeigt werden.

Nur die sichtbaren Zellen markieren
15.10.2012 15:00:19
sadko
Klasse! Gute Lernbeispiele!!!

37 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige