ich habe eine Userform mit einem Listview-Element (Darstellung aller Datensätze).
Wenn der User einen Datensatz markiert, sollen die Daten in den Feldern angezeigt bekommen...
was auch sehr gut funktioniert - nur, dass die Markierung des Datensatzes im Listview-Element dann sofort weg ist... ?!?
Woran liegt es und wie kann man es verhindern ?
Hier der von mir verwendete Code:
Zeilen für das ListviewElement:
' Listview mit Datensätzen des Kunden aus Daten befüllen '
Private Sub Fülle_Listview(Optional varFilter As Variant = 0)
' Daten in PBE als Range behandeln
With Sheets("Daten")
Set Bereich = .UsedRange
meArray = Bereich
End With
With LVKasse
If .ColumnHeaders.Count
' Reaktion auf Clicks in Listview
Private Sub LVKasse_Click()
LPos.Caption = LVKasse.SelectedItem.Index
Call einlesen
' Versuch nach dem einlesen diesen einfach zu markieren - funktioniert aber leider nicht...
LVKasse.ListItems(CDbl(LPos.Caption)).Selected = True
'Debug.Print "Count: " & LVKasse.SelectedItem.Index
'Debug.Print "Subitem(1):" & LVKasse.ListItems(LVKasse.SelectedItem.Index).SubItems(1)
'Debug.Print "Subitem(2):" & LVKasse.ListItems(LVKasse.SelectedItem.Index).SubItems(2)
'Debug.Print "Subitem(3):" & LVKasse.ListItems(LVKasse.SelectedItem.Index).SubItems(3)
End Sub
' per Klick auf Spaltenüberschriten der Listview die Einträge entsprechend sortieren
Private Sub LVKAsse_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
If ColumnHeader.Index = 0 Then
LVKasse.SortKey = ColumnHeader.Index
Else
LVKasse.SortKey = ColumnHeader.Index - 1
End If
LVKasse.SortOrder = IIf(LVKasse.SortOrder = lvwAscending, lvwDescending, lvwAscending)
End Sub
'#################################################################'Code für das einlesen der Daten des selektiertem Datensatzes:
' Einlesen des letzten Datensatzes
Private Sub einlesen()
If LPos.Caption 2 Then
DTPicker1.Value = Worksheets("Daten").Cells(LZeile, 8).Value
End If
If Worksheets("Daten").Cells(LZeile, 9) = "" And Worksheets("Daten").Cells(LZeile, 10) = " _
" Then
OBEin.Value = True
OBAus.Value = False
ElseIf Worksheets("Daten").Cells(LZeile, 9) "" Then
OBEin.Value = True
TB2.Text = Format(Worksheets("Daten").Cells(LZeile, 9).Value, "#,##0.00 ")
Else
OBAus.Value = True
TB2.Text = Format(Worksheets("Daten").Cells(LZeile, 10).Value, "#,##0.00 ")
End If
CBUSt.Value = Format(Worksheets("Daten").Cells(LZeile, 13), "#0 %")
CBSkonto.Value = Format(Worksheets("Daten").Cells(LZeile, 15), "#0 %")
CBBeleg.Value = Worksheets("Daten").Cells(LZeile, 20)
CBUBeleg.Value = Worksheets("Daten").Cells(LZeile, 18)
CBMandant.Value = Worksheets("Daten").Cells(LZeile, 21)
CBKSD.Value = Worksheets("Daten").Cells(LZeile, 22)
Call CBSkonto_Change
' Anzeige des Datenbestandes per Label "LInfo"
' Label Info füllen mit den Daten, wann der Datensatz erfasst wurde und wann geändert
LInfo.Caption = "Datensatz erfasst am: " & VBA.Chr(13) & Worksheets("Daten").Cells(LZeile, _
3).Value & _
VBA.Chr(13) & VBA.Chr(13) & "letzte Änderung am: " & VBA.Chr(13) & Worksheets(" _
Daten").Cells(LZeile, 4).Value
' Scrollbar anpassen
SBSucheBloc = True
SBSuche.Max = Application.WorksheetFunction.Max(Worksheets("Daten").Range("B3:B65000")) ' _
Scollbar aktualisieren
If LPos.Caption > SBSuche.Max Then LPos.Caption = SBSuche.Max
SBSuche.Value = LPos.Caption
LDS.Caption = "Datensatz " & SBSuche.Value & " von " & SBSuche.Max
SBSucheBloc = False
End Sub
Hoffe jemand kann mir helfen ?!Gruß und Danke
Kay