Jump to content

VBS: Excel AutoFilter mit mehreren Kriterien


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,
 
ich kenne die Referenz http://msdn.microsoft.com/de-de/library/office/ff193884(v=office.15).aspx , schaffe es aber nicht, dies in VBS umzusetzen.
 
Mein Code ist
 
objWorkbook.Worksheets(1).Range("D1").Autofilter 4, "Fulfillment sub-task"
 
Mein Wunsch ist, dem Kriterium "Fulfillment sub-task" weitere hinzuzufügen (ODER verknüpft).
 
Habt ihr einen Tipp für mich?
 
Besten Dank und viele Grüße, thumb

Link zu diesem Kommentar

Hallo Cybquest,

 

besten Dank für Deine schnelle Antwort.

 

Ich erhalte leider den Laufzeitfehler:

---------------------------
Windows Script Host
---------------------------
Skript: H:\Documents\LSN\Gewerk Engineering\Abrechnung\Entwurf\TrackSpaceExport\ColumnCleanUp-V0.6.vbs
Zeile: 88
Zeichen: 1
Fehler: Die AutoFilter-Methode des Range-Objektes konnte nicht ausgeführt werden.
Code: 800A03EC
Quelle:  Microsoft Excel

---------------------------
OK  
---------------------------

 

Mein Code lautet:

 

objWorkbook.Worksheets(1).Range("F1").Autofilter 4, "Done", xlOR, "Withdrawn"

 

Was den OffSet anbelangt - der Filter liegt auf D1, wenn ich folgenden Code verwende:

 

objWorkbook.Worksheets(1).Range("D1").Autofilter 4, "Fulfillment sub-task"

 

Besten dank und viele Grüße, thumb

Link zu diesem Kommentar

Ach das ist VBS, nicht VBA...

Dann musst Du für die Konstante xlOR die 2 nehmen, würde ich sagen.



zum Offset: wenn Du z.B. wirklich mit nem Range arbeitest und nicht nur mit einem Feld, ist der Autofilter auch wirklich nur in dem Range aktiv und darin entscheidet dann das Feld, welche Spalte gefiltert wird!

Bsp: Du hast 10 Spalten hübsch befüllt mit Spaltenköpfen. Machst Range("D1:J1"), dann sind die Filterknöpfe nur dort. Der Parameter 4 würde dann allerdings den Filter auf G1 setzen!

 

Kannst ja zum testen den Code (ohne das "objWorkbook") in ein Excel-Makro packen und ausführen...

Über Makro aufzeichnen kommst so z.B. auch zu der Array-Variante ;)

Link zu diesem Kommentar

Const xlOR = 2

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("MeineExcel.xls")
objExcel.Visible = true

objWorkbook.Worksheets(1).Range("D1").Autofilter 4, "Erledigt", xlOR, "in Arbeit"

So hab ich's grad getestet und das funktioniert! In meiner Excel hab ich in Spalte D Aufträge, E und F Beschreibungen etc. und G den Status mit "Erledigt", "offen", "in Arbeit"...

 

 

 

 

 

 

Const xlFilterValues = 7

...

objWorkbook.Worksheets(1).Range("D1").Autofilter 4, Array("Erledigt","in Arbeit","zurückgestellt"), xlFilterValues

 

 

und das funktioniert auch...

bearbeitet von Cybquest
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...