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

Range Variable filtern

Range Variable filtern
08.06.2016 08:51:33
Steffen
Hello zusammen,
ich muss eine umfangreiche Tabelle nach mehreren Kriterien filtern und die Ergebnisse jeweils in ein anderes Tabellenblatt kopieren. Um die Dateigröße nicht unnötig in die Höhe zu treiben wollte ich die Ursprungsdaten in einer Range Variablen zwischenspeichern und diesen Zwischenspeicher dann per Autofilter filtern.
Ein erster Versuch ging leider direkt in die Hose:

Private Sub CommandButton1_Click()
Dim MeineVariable
MeineVariable = Range("A2:B11")
Range(MeineVariable).AutoFilter Field:=2, Criteria1:="a"
Worksheets("Tabelle2").Range("A1").Resize(10, 2) = MeineVariable
End Sub

Ist es überhaupt möglich eine Variable zu filtern oder hab ich einen Denkfehler drin. Jemand eine Idee? Danke schonmal.
SG
Steffen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range Variable filtern
08.06.2016 09:19:53
Daniel
Hi
das ist schon möglich.
allerdings muss deine Variable eine Objektvariable vom Typ Range sein.
Objektvariablen werden in VBA immer mit SET zugewiesen.
mit
Dim MeineVariable
MeineVariable = Range("A2:B11")

wird MeineVariable keine Range-Objektvariable, sondern ein einfaches zweidimensionales Array, welches lediglich die Zellwerte aus A2:B11 enthält.
wenn du eine Range-Objektvariable erstellen willst, mit der du deinen Autofilter füttern kannst, dann so:
Dim MeineVariable As Range
Set MeineVariable = Range("A2:B11")
Gruß Daniel

Anzeige
AW: Range Variable filtern
08.06.2016 09:31:52
Steffen
Hello,
vielen Dank für die schnelle Hilfe. Man kann wohl sagen es ist sehr wohl möglich und ich sollte dringend meine VBA Grundlagen auffrischen :-)
SG
Steffen

AW: Range Variable filtern
13.06.2016 14:27:35
Steffen
Hallo nochmal,
ich bräuchte doch noch mal weitere Hilfe. Die ersten Hilfestellungen scheinen zu passen, trotzdem macht Excel nicht was ich will.
Hier der Code:
Private Sub CommandButton1_Click()
Dim MeineVariable As Range
Set MeineVariable = Sheets("Tabelle1").Range("A2:B11")
MeineVariable.AutoFilter Field:=2, Criteria1:="a"
Worksheets("Tabelle2").Range("B3").Resize(10, 2) = MeineVariable
End Sub
Der Code sollte den Tabelleninhalt in die Variable kopieren, diese dann Filtern und den gefilterten Inhalt in Tabelle 2 einfügen.
Was der Code seltsamerweise macht: er filtert den Bereich in Tabelle1 und nicht in der Variablen und fügt auch in Tabelle2 nichts ein. Fehlermeldung gibts auch keine.
Danke für eure Hilfe!
SG
Steffen

Anzeige
AW: Range Variable filtern
08.06.2016 09:26:20
UweD
Hallo
als Range festlegen ... Evtl. noch das Blatt mit angeben
Private Sub CommandButton1_Click()
Dim MeineVariable As Range
Set MeineVariable = Sheets("Tabelle1").Range("A2:B11")
MeineVariable.AutoFilter Field:=2, Criteria1:="a"
Gruß UweD

AW: Range Variable filtern
14.06.2016 08:28:02
Steffen
Hallo nochmal,
Haken vergessen, deswegen Doppelpost :-(
ich bräuchte doch noch mal weitere Hilfe. Die ersten Hilfestellungen scheinen zu passen, trotzdem macht Excel nicht was ich will.
Hier der Code:
Private Sub CommandButton1_Click()
Dim MeineVariable As Range
Set MeineVariable = Sheets("Tabelle1").Range("A2:B11")
MeineVariable.AutoFilter Field:=2, Criteria1:="a"
Worksheets("Tabelle2").Range("B3").Resize(10, 2) = MeineVariable
End Sub

Der Code sollte den Tabelleninhalt in die Variable kopieren, diese dann Filtern und den gefilterten Inhalt in Tabelle 2 einfügen.
Was der Code seltsamerweise macht: er filtert den Bereich in Tabelle1 und nicht in der Variablen und fügt auch in Tabelle2 nichts ein. Fehlermeldung gibts auch keine.
Danke für eure Hilfe!
SG
Steffen

Anzeige
AW: Range Variable filtern
14.06.2016 08:39:48
UweD
Hallo
versuch es mal so

Private Sub CommandButton1_Click()
Dim MeineVariable As Range
Set MeineVariable = Sheets("Tabelle1").Range("A2:B11")
MeineVariable.AutoFilter Field:=2, Criteria1:="a"
MeineVariable.Copy Worksheets("Tabelle2").Range("B3").Resize(10, 2)
End Sub

AW: Range Variable filtern
14.06.2016 13:07:14
Steffen
Hallo,
damit funktioniert es, wobei er beim Filtern nach wie vor bei Tabelle1 den entsprechenden Bereich filtert. Diesen Filter habe ich mit "Selection.AutoFilter" am Ende der Prozedur wieder deaktiviert.
Nur fürs technische Verständnis, wieso fügt Excel einen Filter im Tabellenblatt ein, wenn die Anweisung ganz klar eine Variable filtern soll? Ich denke für den Fall dass die Ursprungsdaten nach einlesen der Daten in die Variable verändert werden würden, dann würden ja nicht die Daten der Variablen bearbeitet, sondern die modifizerten in der Tabelle. Oder arbeitet eine Range Variable eher als Verweis auf einen Bereich und nimmt die Daten gar nicht in seinen Speicher?
Wobei diese Arbeitsweise meine Anfrage ad absurdum führen würde, da es keinen Unterschied machen würde, ob die Variable benutzt wird oder man direkt den Bereich filtert.
SG
Steffen

Anzeige
AW: Range Variable filtern
14.06.2016 15:33:19
UweD
Nur fürs technische Verständnis,
..und nimmt die Daten gar nicht in seinen Speicher
Es ist keine Variable, sondern es wird ein Bereich (Range) zugewiesen und zwar aus Tabellenblatt1
Dim MeineVariable As Range
Set MeineVariable = Sheets("Tabelle1").Range("A2:B11")
Du kannst natürlich daten in ein Array einlesen, dann musst du aber filtern usw händisch programmieren und kannst nicht auf exceltools zugreifen.
LG UweD

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige