dies ist mein erster Beitrag - bislang habe ich alle Probleme mit dem Stöbern im Forum gefunden. Doch hier habe ich schon einige Stunden vergeblicher Arbeit hineingesteckt und komme nicht weiter:
Ich habe eine Liste mit Projekten. Diese bestehen aus
einer laufenden Nummer
Projektname
Arbeitsbereich
Auftraggeber
Zeitsumme aller geleisteten Arbeitsstunden
und dem Projektstatus.
Ich möchte diese Liste filtern, und zwar soll die Möglichkeit bestehen, z.b. alle Projekte anzuzeigen, deren Zeitsumme über 100 Stunden liegt.
ich habe dafür die Werte der Zeitspalte in Double umgerechnet und erwartet, dass Excel es nun mit der Autofilterfunktion schafft, die entsprechenden Fälle anzuzeigen.
Bei der Projektnummer funktioniert es wunderbar, aber bei der Zeit verzweifle ich gerade.
dies ist der Code für die Filterfunktion:
Private Sub CB_Filtern_Click()
Dim c As Range
Dim SpalteS As String
Dim SpalteI As Integer
Dim Bereich As String 'um den Suchbereich zu definieren
Dim Operator As String '(=)
Dim Kriterium As Variant
Dim Kategorie As String
Dim last As Integer
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
Kategorie = ComboBox_Filtern.Text
If Kategorie = "Projektnummer" Then
SpalteS = "C"
SpalteI = 1
Kriterium = CLng(ComboBox_Attr.value)
ElseIf Kategorie = "Projektbezeichnung" Then
SpalteS = "D"
SpalteI = 2
Kriterium = CStr(ComboBox_Attr.value)
ElseIf Kategorie = "Arbeitsbereich" Then
SpalteS = "E"
SpalteI = 3
Kriterium = ComboBox_Attr.value
ElseIf Kategorie = "Auftraggeber" Then
SpalteS = "F"
SpalteI = 4
Kriterium = ComboBox_Attr.value
ElseIf Kategorie = "Zeitsumme" Then
SpalteS = "G"
SpalteI = 5
Kriterium = CDbl(ComboBox_Attr.value * 60 / 1440)
ElseIf Kategorie = "Status" Then
SpalteS = "H"
SpalteI = 6
Kriterium = ComboBox_Attr.value
Else: Exit Sub
End If
last = newLast("Projekte", SpalteI)
Bereich = SpalteS & "8:" & SpalteS & last
Operator = ComboBox_Operator.Text
For Each c In ActiveSheet.Range(Bereich)
Select Case Operator
Case "=": If c.value = Kriterium Then c.AutoFilter SpalteI, Kriterium
Case "": If c.value > Kriterium Then c.AutoFilter SpalteI, Criteria1:=">" & Kriterium
Case ">=": If c.value >= Kriterium Then c.AutoFilter SpalteI, Criteria1:=">=" & Kriterium
Case "
Hier habe ich mal ein Bild davon, wie Liste und Userform aussehen (Sensible Daten entfernt):Vielen Dank für Hilfe :-)
Benita