Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1152to1156
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listview - Markierung (selection) verschwindet

Listview - Markierung (selection) verschwindet
KLE
Hallo,
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Nachbauen zuviel Arbeit - bitte Datei hochladen...
05.05.2010 17:30:07
NoNet
Hallo Kay,
glaubst Du allen Ernstes, jemand macht sich die Mühe, aus Deinem geposteten code eine komplette Mappe mit Daten, UserForms, Steuerelementen etc. nach zu bauen ?
Mir persönlich ist das für eine Hilfestellung ehrlich gesagt zu viel Arbeit, daher werde ich mich nicht an der Erarbeitung einer Lösung beteiligen - es sei denn, Du lädst eine (auf das wesentliche reduzierte) DEMO-Datei hoch, anhand der das Problem nachvollzogen werden kann und die man dann analysieren kann...
Gruß, NoNet
AW: Nachbauen zuviel Arbeit - bitte Datei hochladen...
05.05.2010 19:57:18
Hajo_Zi
Hallo,
dem stimme ich zu.

Anzeige
AW: Klappt jetzt, aber wie geht Zeile fett ?
05.05.2010 20:53:40
KLE
Sorry, wollte garantiert keine "Mehrarbeit" verursachen ! Dachte nur, Ihr "lest" einen Fehler als "Profis" schon auf dem ersten Blick heraus...?!
OK, nehme meine Frage zurück, da ich nun selbst beim erstellen einer Demo-Datei bemerkte, dass es an der Belegung des Labels "LPos.Caption" mit der Datensatzposition gelegen haben muss. Da ich in der Demoversion ein "neues" Label dafür nutzte - funktionierte es fehlerfrei. Also gleich in meiner Datei auch probiert und ein neues Label "Visible = false" reingepackt - diesem die Datensatzposition aus der Listview zugewiesen und darauf im Code "einlesen" Bezug genommen - klappt es.
Aber, wie kann ich die ganze Zeile "FETT" machen in der Listview - die solange Fett bleibt, bis eine andere Zeile gewählt wird ? Auch wenn der Focus aus der Listview genommn wird ?
Gruß und Danke
Kay
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige