Anzeige
Archiv - Navigation
1020to1024
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
Tabelle für Filter vorher bestimmen - VBA
08.11.2008 11:17:00
Wolfgang
Hallo,
der untenstehende Code befindet sich hinter einem UF und bewirkt das Filtern von Daten der jeweils aktiven Tabelle. Nun würde ich den Vorgang gerne umstellen und den UF über eine Startseite aufrufen. Dabe würde ich dann gerne im UF vorbestimmen, ob die Daten aus der Tabelle "alt" oder aus der Tabelle "neu" oder aus beiden Tabellen gefiltert werden sollen. Weiterhin würde ich dann gerne erreichen, dass die gefilterten Daten innerhalb der Mappe in eine jeweils neue Tabelle die den jeweiligen Namen der Abfrage erhalten "Ergebnis alt", "Ergebnis neu", "Ergebnis alt und neu" kopiert werden und nicht mehr in eine neue Mappe. Bislang hat mir Excel dabei auch nicht die Überschrift, die sich in Zeile 1 befindet übernommen, wäre die Ergänzung auch denkbar?
Habe schon verschiedene Umstellungen versucht, komme dabei aber nicht weiter und wäre für jede Hilfestellung sehr dankbar.
Herzliche Grüße
Wolfgang
'*** Filterkritrien festlegen und filtern ***

Private Sub cmdFiltern_Click()
' Variablendeklaration
Dim intCounter As Integer
Dim shSource As Worksheet
Dim lngRow As Long
Dim wb As Workbook
Dim sport As String
Dim fd As FileDialog
Dim vrtSelectedItem As Variant
'neue Tabelle für gefiltere Datensätze anlegen
' Objektvariable für aktives Blatt festlegen
Set shSource = ActiveSheet
' Schleife über 15 TextBoxes
For intCounter = 1 To 15
'Wenn eine Auswahl erfolgte, dann
If Controls("cbbKriterium" & intCounter).ListIndex  -1 Then
'Kriterium festlegen
If intCounter = 3 Then
Range("A1").Autofilter Field:=intCounter, _
Criteria1:=CDate(Controls("cbbKriterium" & intCounter).Value)
Else
Range("A1").Autofilter Field:=intCounter, _
Criteria1:=Controls("cbbKriterium" & intCounter).Value
End If
End If
Next intCounter
' Alle sichtbaren Zellen kopieren
Range("A1").CurrentRegion.Copy
' Neues Arbeitsblatt hinzufügen
Set wb = Workbooks.Add(1)
ActiveSheet.Paste
' Autofilter ausschalten
shSource.Range("A1").Autofilter
' Kopiermodus ausschaltern
Application.CutCopyMode = False
' Zwischenspeicher einfügen
' Zelle A1 auswählen
Range("A1").Select
wb.Activate
Rows("1:1").Select
Selection.Delete Shift:=xlUp
' Dialog beenden
Unload Me
Set fd = Nothing
End Sub


3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle für Filter vorher bestimmen - VBA
08.11.2008 11:36:00
Daniel
Hi
naja, wenn du für die Filterung unterschiedliche Tabellenblätter verwenden willst, die dann auch noch nicht unbedingt die aktiven sind, dann musst das in den Code so einbauen:

Set shSource = Sheets("ALT") '-- hier den Namen des Blattes verwenden auf dem gefiltert werden  _
soll

und dann im weitern Codeverlauf das "shSource" vor jedem Zellbezug wie "Range" oder "Cells" davorsetzen, ohne diese Referenz auf das Tabellenblatt werden diese Anweisungen sonst immer auf dem grade aktiven angewendet. Also Code so erweitern:


shSource.Range("A1").Autofilter Field:=intCounter, _
Criteria1:=CDate(Controls("cbbKriterium" & intCounter).Value)


zur Frage der Überschrift, die wird schon mitkopiert, aber durch diese Zeilen wieder gelöscht:


wb.Activate
Rows("1:1").Select
Selection.Delete Shift:=xlUp


wobei man diese Zeilen auch in einer zusammenfassen könnte:


wb.sheets(1).Rows("1:1").Delete Shift:=xlUp


Gruß, Daniel

Anzeige
das klappt nicht
08.11.2008 12:55:00
Wolfgang
Hallo Daniel,
zunächst herzlichen Dank für Deine schnelle Rückmeldung. Ich habe versucht, Deine Hinweise Schritt für Schritt umzusetzen. Zunächst also den Code angepasst, für die Seite "Alt" - Die Comboboxes im UF bleiben allerdings leer. Was müßte ich da evtl. noch verändern? - Auf Seite "Start" wird als das UF geöffnet, sollte dann aber die Daten aus Seite "Alt" anzeigen bzw. im weiteren Code dann "Neu".
Ich habe dann das mit der Übeschrift versucht, wie müßte der Code geändert werden, wenn nicht gelöscht, sondern eingefügt werden soll?
Danke schon jetzt wieder.
Gruß - Wolfgang
Anzeige
AW: das klappt nicht
08.11.2008 13:18:00
Daniel
Hi
was soll ich dir sagen, ich kenne deinen Code nicht, ich kenne deine Datei und deine Daten nicht, ich bin kein Lohnprogrammierer, der fertige Makros produziert.
wenn du die Comoboxen mit Daten aus der Tabelle befüllst, dann musst du natürlich auch diesen Code entsprechend anpassen, das zieht sich durchs ganze Projekt durch.
Gruß, Daniel

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige