Hallo zusammen,
ich habe 2 Fragen zur Programmierung eines Listenfeldes.
1) Ich habe ein Listenfeld, das gefiltert werden kann.
Nun sollen im Listenfeld nur die sichtbaren Zeilen der Tabelle im Hintergrund stehen.
Wenn ich meinen Code ausführen will erhalte ich allerdings die folgende Fehlermeldung: "Eigenschaft Column konnte nicht gesetzt werden. Ungültiger Eigenschaftswert." für die Zeile:
lst_Tender.Column(Spalte, lst_Tender.ListCount - 1) = Zelle.Offset(0, Spalte)
Leider kann ich den Fehler nicht finden.
Anbei mein kompletter Code:
Private Sub btn_filtern_Click()
Dim Zelle As Range
Dim Spalte As Integer
Dim letzteZeile As Long
Eventschalter = True
With tab_Daten
.AutoFilterMode = False
If txt_Kunde.Value = "" Then
.Range("B2").AutoFilter field:=3
Else
.Range("B2").AutoFilter field:=3, Criteria1:=txt_Kunde.Value
End If
If txt_Abgabe.Value = "" Then
.Range("B2").AutoFilter field:=4
Else
.Range("B2").AutoFilter field:=4, Criteria1:=txt_Abgabe.Value
End If
If comb_Status.Value = "" Then
.Range("B2").AutoFilter field:=8
Else
.Range("B2").AutoFilter field:=8, Criteria1:=comb_Status.Value
End If
If txt_Verkäufer.Value = "" Then
.Range("B2").AutoFilter field:=12
Else
.Range("B2").AutoFilter field:=12, Criteria1:=txt_Verkäufer.Value
End If
If comb_ES.Value = "" Then
.Range("B2").AutoFilter field:=13
Else
.Range("B2").AutoFilter field:=13, Criteria1:=comb_ES.Value
End If
If comb_Entscheidung.Value = "" Then
.Range("B2").AutoFilter field:=14
Else
.Range("B2").AutoFilter field:=14, Criteria1:=comb_Entscheidung.Value
End If
If comb_PSD.Value = "" Then
.Range("B2").AutoFilter field:=15
Else
.Range("B2").AutoFilter field:=15, Criteria1:=comb_PSD.Value
End If
lst_Tender.RowSource = ""
lst_Tender.Clear
letzteZeile = .Range("A" & .Rows.Count).End(xlUp).Row
For Each Zelle In .UsedRange.Columns(1).SpecialCells(xlCellTypeVisible)
If Zelle.Row <> 1 Then
lst_Tender.AddItem Zelle.Value
For Spalte = 1 To 21
lst_Tender.Column(Spalte, lst_Tender.ListCount - 1) = Zelle.Offset(0, Spalte)
Next Spalte
End If
Next Zelle
Eventschalter = False
End With
End Sub
2) Die Informationen des Listenfeldes werden zusätzlich in Textfeldern angezeigt. Hier kann der User diese bearbeiten. Leider bekomme ich noch einen Fehler beim Code zum Speichern der Änderungen.
Hier erhalte ich den Fehler in der Zeile:
Zeile = .Range("A:A").Find(what:=txt_Projekt.Value, lookat:=xlWhole).Row
Anbei der vollständige Code:
Private Sub btn_speichern_Click()
Dim Zeile As Long
Eventschalter = True
With tab_Daten
Zeile = .Range("A:A").Find(what:=txt_Projekt.Value, lookat:=xlWhole).Row
.Range("C" & Zeile).Value = txt_Kunde.Value
.Range("D" & Zeile).Value = Format(txt_Abgabe.Value, "dd.mm.yyyy")
.Range("L" & Zeile).Value = txt_Verkäufer.Value
.Range("N" & Zeile).Value = comb_Entscheidung.Value
.Range("M" & Zeile).Value = comb_ES.Value
.Range("O" & Zeile).Value = comb_PSD.Value
.Range("H" & Zeile).Value = comb_Status.Value
End With
Eventschalter = False
End Sub
Vielleicht könnt ihr mir helfen.
Danke und viele Grüße
|