Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Bei Klick CommandButton filtern nach Liste
09.10.2017 11:01:47
Kati
Hallo zusammen,
ich möchte über einen Klick auf den CommandButton immer den nächsten Wert in einer Filterung anzeigen lassen. Ab der Filterung 30 überspringt dieser einige Werte und filtert auf 711. Es gibt auch eine Liste in einem anderen Tabellenblatt um dem Array zu füllen. Könnt ihr mir helfen?

Option Explicit
Sub filtern()
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
If .AutoFilterMode = True Then GoTo weiter:
End With
Dim g As Integer
Dim gewerke()
gewerke = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "30", "40", "50", "60", "70", "1000", "100", "700", "710", "711", "712", "713", "719", "720", "721", "722", "723", "724", "725", "729", "730", "731", "732", "733", "734", "735", "736", "739", "740", "741", "742", "743", "744", "745", "746", "747", "748", "749", "750", "751", "752", "759", "760", "761", "762", "763", "769", "770", "771", "772", "773", "774", "775", "779", "790", "811", "821", "831", "841", "851", "861", "862", "871")
For g = 0 To UBound(gewerke)
Sheets("Vergabe").Activate
ActiveSheet.Range("A1:a5362").AutoFilter Field:=1, Criteria1:=gewerke(g), Operator:=xlAnd
Next g
weiter: Call nächstefilterung
End Sub
Private Sub nächstefilterung()
Dim Variable As Variant
Dim g As Variant
Dim Ergebnis As Integer
Dim gewerke()
gewerke = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "  _
_
14", "15", "16", "17", "18", "19", "20", "21", "30", "40", "50", "60", "70", "1000", "100", " _
700", "710", "711", "712", "713", "719", "720", "721", "722", "723", "724", "725", "729", "730", "731", "732", "733", "734", "735", "736", "739", "740", "741", "742", "743", "744", "745", "746", "747", "748", "749", "750", "751", "752", "759", "760", "761", "762", "763", "769", "770", "771", "772", "773", "774", "775", "779", "790", "811", "821", "831", "841", "851", "861", "862", "871")
Dim c1 As String
With Worksheets(1)
If .AutoFilterMode Then
With .AutoFilter.Filters(1)
If .On Then c1 = .Criteria1
End With
End If
End With
Range("E1").Value = "" & c1
g = Range("E1").Value
Sheets("Vergabe").Activate
ActiveSheet.Range("A1:a5362").AutoFilter Field:=1, Criteria1:=gewerke(g), Operator:=xlAnd
'Range("E1").ClearContents
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
eine Bsp-Datei inkl Code per Uload könnte helfen
09.10.2017 17:08:33
Oberschlumpf
AW: Bei Klick CommandButton filtern nach Liste
09.10.2017 20:52:37
onur
Wieso füllst du das array bei jedem Aufruf von "nächstefilterung" neu?
Das array muss nur einmal gefüllt werden und sollte public deklariert sein, damit jeder code darauf zugreifen kann.
Ich verstehe irgendwie auch nicht, was das alles soll:
Du filterst im ersten Teil in einer Schleife hintereinander (ohne Pause) nach allen einzelnen Elementen des arrays und im zweiten Teil ("nächstefilterung") noch mal das gleiche nach dem Wert "871"?
Range("E1").Value = "" & c1
g = Range("E1").Value

Hier setzt du g=.criteria und dann g als index des arrays?
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige