Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

Per VBA die Zelladressen drucken, die der Autofilter anzeigtu
#1
Hallo alle zusammen,

ich habe in der Spalte A den Autofilter eingesetzt, der mir nun aus einer langen Liste die gewünschten Zellen anzeigt.

Jetzt möchte ich, dass per VBA mit debug.print mir alle Zelladressen dieser Auswahl gedruckt werden. Wie geht das?
to top
#2
Hallo,

Code:
Sub aaa()
  Debug.Print Range("_FilterDatabase").SpecialCells(xlCellTypeVisible).Address
End Sub

Gruß Uwe
[-] Folgende(r) 1 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • Nutella
to top
#3
Hallo Uwe,

hätte nicht gedacht, dass dies jemand hinbekommt. Umso mehr: Vielen Dank für deinen Expertenrat.
to top
#4
Hallo,

diesen Befehl hatte mir vor einigen Tagen freundlicherweise Uwe in diesem Thread als Antwort auf meine Frage zugesandt. Ein Superteil.

Code:
debug.print Range("_FilterDatabase").SpecialCells(xlCellTypeVisible).Address


Hier werden aber nun alle Fundstellen als Zeichenkette angezeigt. Also auch der sogenannte Header, die Zelle A1. Könnte mir mal jemand verraten
wie ich auf Grundlage dieser Anweisung ein Ergebnis ohne dieses "A1" hinbekomme. Eine solche Syntax zu konstruieren ist für mich leider immer noch Schwerstarbeit und ich müßte alle Kombinationen ausprobieren, was ja nun unendlich viel Zeit in Anspruch nehmen würde.
 
Für eure Arbeit schon mal im voraus herzlichen Dank.
to top
#5
Hallo,

was gefällt Dir an André`s Vorschlag nicht? http://www.clever-excel-forum.de/Thread-...6#pid34706
Ersetze das letzte .Count einfach durch .Address .

Gruß Uwe
to top
#6
Hallo Uwe,

o.k. kann man so machen, hatte aber mehr dein "_FilterDatabase" im Kopf, denn zum Vergleich:
Code:
'Andre:
z = ActiveSheet.AutoFilter.Range.Offset(1, 0).Resize(ActiveSheet.AutoFilter.Range.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Address
'Dein Vorschlag allerdings noch mit dem für mich störenden Header:
x = Range("_FilterDatabase").SpecialCells(xlCellTypeVisible).Address
'Wenns mit _FilterDatabase nicht geht, mache ich es lieber so, ist kürzer und leichter zu merken:
y = Mid(Range("_FilterDatabase").SpecialCells(xlCellTypeVisible).Address, 6)
'aber: Alternativen sind natürlich immer wichtig!!
to top
#7
Hallo,

ActiveSheet.AutoFilter.Range und Range("_FilterDatabase") verweisen auf denselben Bereich und sind somit austauschbar. ;-)

Code:
Sub OhneHeader()
  With ActiveSheet.Range("_FilterDatabase")
   Debug.Print .Offset(1, 0).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Address
  End With
End Sub

Gruß Uwe
to top
#8
Hallo Uwe,

danke nochmal für den "extra" Code. Der Code von Andre ist für mich zunächst sogar mal leichter verständich gewesen als deiner. Denn, diesen hatte ich heute
morgen Stück für Stück zerlegt. Trotzdem ohne deinen Wink mit Zaunpfahl wäre ich wohl nicht so ohne weiteres darauf gekommen. Grobes Verständis und
Beherrschen sind zweierlei.

Ihr macht hier einen tollen Job. Danke euch allen.

Bis die Tage.
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste