Anzeige
Archiv - Navigation
1868to1872
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

Listview
31.01.2022 14:03:42
Daniel
Hallo
Wieder mal brauch ich eure wertvolle Hilfe, denn Google und Co
brachten nicht den Erfolg denn ich wünsche.
Darum die frage an euch
Ich habe eine Listview erstellt
Mit folgendem Code

Private Sub UserForm_Initialize()
Dim i As Long, iLetzte As Integer, y As Long
iLetzte = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
With Me.ListView1
.FullRowSelect = True
.View = 3
.LabelEdit = 1
.Gridlines = True
.HideSelection = False
.AllowColumnReorder = False
End With
With ListView1.ColumnHeaders
.Add , , Tabelle1.Cells(1, 1), 65
.Add , , Tabelle1.Cells(1, 2), 65
.Add , , Tabelle1.Cells(1, 3), 220
.Add , , Tabelle1.Cells(1, 4), 75
.Add , , Tabelle1.Cells(1, 5), 75
.Add , , Tabelle1.Cells(1, 6), 65
.Add , , Tabelle1.Cells(1, 7), 65
End With
For i = 2 To iLetzte
With ListView1
.ListItems.Add , , Tabelle1.Cells(i, 1)
For y = 1 To 2
.ListItems(i - 1).SubItems(y) = Tabelle1.Cells(i, y + 1)
Next
End With
Next i
End Sub
Dieser Code funktioniert einwandfrei
Nun versuchte ich es beim Commanbutton folgen Code funktioniert nicht.
Was mache ich Falsch?, denn ich bin absolut Anfänger.

Private Sub COMBEinfügen_Click()
Worksheets("Übersicht").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = Label2.Caption
Worksheets("Übersicht").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = TextBox1.Text
Worksheets("Übersicht").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = Combrevier.Text
With ListView1
.ListItems.Add , , Tabelle1.Cells(1, 1), Label2.Caption
.ListItems.Add , , Tabelle1.Cells(1, 2), TextBox1.Text
.ListItems.Add , , Tabelle1.Cells(1, 3), Combrevier.Text
End With
End Sub
Noch mal vielen lieben Dank für eure Hilfe.
Beste Grüsse
Dani

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Mein Auto funktioniert nicht? Was ist falsch? (oT)
31.01.2022 15:27:19
EtoPHG

AW: Mein Auto funktioniert nicht? Was ist falsch? (oT)
31.01.2022 15:42:21
Daniel
Hallo
Okay wie muss ich diesen Code vervollständigen,
damit ListView1 in der Userform aktualisiert wird ?
With ListView1
.ListItems.Add , , ?
.ListItems.Add , , ?
.ListItems.Add , , ?
End With
Besten Dank im Voraus
LG
Dani
AW: Mein Auto funktioniert nicht? Was ist falsch? (oT)
31.01.2022 15:50:43
Yal
Hallo Daniel,
gut gemeint, aber hilft uns bitte, Dir zu helfen: da baut keiner einen ListView nach, um nach Stunden festzustellen, dass es mit deiner Konstellation gar nicht passt.
Lädt deine Datei hoch (Achtung, Daten anonymisieren oder löschen, aber ausreichendes muss erhalten bleiben).
VG
Yal
AW: Mein Auto funktioniert nicht? Was ist falsch? (oT)
31.01.2022 16:20:51
Daniel
Hallo
Besten Dank
Hier noch die Datei
LG
Dani
Anzeige
Nein, sorry. jmd andere?
31.01.2022 17:13:05
Yal
Hallo Daniel,
sorry, ich komme in der Thematik nicht rein.
Ich vertehe auch nicht, warum so kompliziert. Eigentlich möchtest Du nur pro Tag/Person Daten erfassen, oder?
An dem unnachvollziehbaren Erfassungsmaske zerschält meine Motivation.
Ich lasse offen, vielleicht nimmt sich jemand die Zeit.
VG
Yal
AW: Nein, sorry. jmd andere?
31.01.2022 20:47:00
Dani
Hallo Yal
Besten Dank fürs überprüfen der Datei
Vielleicht habe ich mich nicht korrekt ausgedruckt bei der Listview sollte per Commanbutton aktualisiert werden.
Wie ich den Code schreiben müsste habe ich keine Ahnung alle Code die ich getestet habe ergab nur Fehler
Darum brauche eure wertvolle Hilfe.
LG
Dani
Anzeige
AW: Nein, sorry. jmd andere?
31.01.2022 23:06:41
Alwin
Hallo Dani,
etwas stimmt mit deiner Datei grundsätzlich nicht. so was Simples wie:

Private Sub UserForm_Initialize()
TextBox1 = Format(CDate(Now), "dd.mm.yyyy")
End Sub
führt zu Fehlermeldung. Erzeuge mal eine leere Datei, lege eine Userform mit Textbox an und teste mal diese kleine Prozedur. Wirft da Format einen Fehler aus, stimmt was mit deiner Excel Installation nicht. Funktioniert es so normal, hat nur die von dir hochgeladene Datei einen Knacks weg. Dann solltest du einfach noch mal eine Neue hochladen.
Gruß Uwe
AW: Nein, sorry. jmd andere?
01.02.2022 08:13:34
Dani
Hallo Uwe
Ja da hast du recht ich habe eine Userform erstellt. Danach hatte ich keine Fehler.
Uwe das Hauptproblem, das ich habe ist Listview soll aktualisiert werden per Commanbutton
Ich habe echt kein Plan wie das geht?
Per Commanbutton füge ich die Daten in die Tabelle ein nun sollte listview auch aktualisiert werden.
Das heißt wenn ich die Userform schließe und wieder öffne sind die Daten im Listview aktuell.
Darum die Frage wie muss ich den Code im Commanbutton schreiben das die Listview aktualisiert wird.
Darum brauch ich die Hilfe von euch und bedanke mich ganz herzlichst.
Gruß
Dani
Anzeige
AW: Nein, sorry. jmd andere?
01.02.2022 09:26:59
Alwin
Hallo Dani,
außer das Listview als Schaufenster zu verwenden, willst du wirklich nicht anderes damit machen? Dann so:

Private Sub COMBEinfügen_Click()
Worksheets("Übersicht").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = Label2.Caption
Worksheets("Übersicht").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = TextBox1.Text
Worksheets("Übersicht").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = Combrevier.Text
ListviewLaden
End Sub

Private Sub UserForm_Initialize()
Dim i As Long, iLetzte As Integer, y As Long
iLetzte = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
With Me.ListView1
.FullRowSelect = True
.View = 3
.LabelEdit = 1
.Gridlines = True
.HideSelection = False
.AllowColumnReorder = False
End With
With ListView1.ColumnHeaders
.Add , , Tabelle1.Cells(1, 1), 65   'Tag
.Add , , Tabelle1.Cells(1, 2), 65    'Datum
.Add , , Tabelle1.Cells(1, 3), 220 'xxxxxxxxxx
.Add , , Tabelle1.Cells(1, 4), 75   'Beginn
.Add , , Tabelle1.Cells(1, 5), 75  'Ende
.Add , , Tabelle1.Cells(1, 6), 65  'Pause
.Add , , Tabelle1.Cells(1, 7), 65    'Korekturzeit
End With
ListviewLaden
TextBox1.Value = Format(Now, "dd.mm.yyyy")
Label1.Caption = Format(CDate(TextBox1.Text), "mmmm")
Label2.Caption = Format(CDate(TextBox1.Text), "dddd")
Label3.Caption = Format(CDate(TextBox1.Text), "yyyy")
Sheets("Daten").Activate
Combrevier.RowSource = "Testen"
End Sub

Private Sub ListviewLaden()
Dim i As Long, iLetzte As Integer, y As Long
iLetzte = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
With ListView1
.ListItems.Clear
For i = 2 To iLetzte
For y = 1 To 2
.ListItems.Add , , Tabelle1.Cells(i, 1)
.ListItems(i - 1).SubItems(y) = Tabelle1.Cells(i, y + 1)
Next y
Next i
End With
End Sub
Gruß Uwe
Anzeige
AW: Nein, sorry. jmd andere?
01.02.2022 10:14:26
Dani
Hallo Uwe
Vielen lieben Dank dafür, ja die Listview wir nur als Schaufenster benützt. Weil wir müssen für die Mitarbeiter die Arbeitszeit errechnen danach werden die Daten in ein anderes Programm übertragen.
Ich habe dein Code1zu 1 übernommen leider funktioniert er nur teilweise, beim einfügen werden die Tage doppelt und dreifach eingefügt.
der Rest nicht.
So sieht es bei mir aus:

Private Sub COMBEinfügen_Click()
Worksheets("Übersicht").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = Label2.Caption
Worksheets("Übersicht").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = TextBox1.Text
Worksheets("Übersicht").Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = CoBrevier.Text
ListviewLaden
End Sub

Private Sub UserForm_Initialize()
With Me.ListView1
.FullRowSelect = True
.View = 3
.LabelEdit = 1
.Gridlines = True
.HideSelection = False
.AllowColumnReorder = False
End With
With ListView1.ColumnHeaders
.Add , , Tabelle1.Cells(1, 1), 65   'Tag
.Add , , Tabelle1.Cells(1, 2), 65    'Datum
.Add , , Tabelle1.Cells(1, 3), 220 'xxxxxxxxxx
.Add , , Tabelle1.Cells(1, 4), 75   'Beginn
.Add , , Tabelle1.Cells(1, 5), 75  'Ende
.Add , , Tabelle1.Cells(1, 6), 65  'Pause
.Add , , Tabelle1.Cells(1, 7), 65    'Korekturzeit
End With
ListviewLaden
TextBox1.Value = Format(Now, "dd.mm.yyyy")
Label1.Caption = Format(CDate(TextBox1.Text), "mmmm")
Label2.Caption = Format(CDate(TextBox1.Text), "dddd")
Label3.Caption = Format(CDate(TextBox1.Text), "yyyy")
Dim ZeileMax As Long
ZeileMax = Tabelle2.UsedRange.Rows.Count
With Me.CoBRe
.RowSource = "tabelle2!A2:A90" & ZeileMax
.ListIndex = 0
.ListRows = 10
.ForeColor = RGB(0, 0, 255)
End With
End Sub

Private Sub ListviewLaden()
Dim i As Long, iLetzte As Integer, y As Long
iLetzte = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
With ListView1
.ListItems.Clear
For i = 2 To iLetzte
For y = 1 To 2
.ListItems.Add , , Tabelle1.Cells(i, 1)
.ListItems(i - 1).SubItems(y) = Tabelle1.Cells(i, y + 1)
Next y
Next i
End With
End Sub
Könnest du bitte noch mal überprüfen
Besten Dank dafür
Gruß
Dani
Anzeige
AW: Nein, sorry. jmd andere?
01.02.2022 09:32:46
Alwin
ich habe vergessen im Initialize der Userform die überflüssig gewordenen Deklarationen rauszunehmen.

Private Sub UserForm_Initialize()
Dim i As Long
iLetzte = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
With Me.ListView1
.FullRowSelect = True
.View = 3
.LabelEdit = 1
.Gridlines = True
.HideSelection = False
.AllowColumnReorder = False
End With
With ListView1.ColumnHeaders
.Add , , Tabelle1.Cells(1, 1), 65   'Tag
.Add , , Tabelle1.Cells(1, 2), 65    'Datum
.Add , , Tabelle1.Cells(1, 3), 220 'xxxxxxxxxx
.Add , , Tabelle1.Cells(1, 4), 75   'Beginn
.Add , , Tabelle1.Cells(1, 5), 75  'Ende
.Add , , Tabelle1.Cells(1, 6), 65  'Pause
.Add , , Tabelle1.Cells(1, 7), 65    'Korekturzeit
End With
ListviewLaden
TextBox1.Value = Format(Now, "dd.mm.yyyy")
Label1.Caption = Format(CDate(TextBox1.Text), "mmmm")
Label2.Caption = Format(CDate(TextBox1.Text), "dddd")
Label3.Caption = Format(CDate(TextBox1.Text), "yyyy")
Sheets("Daten").Activate
Combrevier.RowSource = "Testen"
End Sub

Anzeige
AW: Nein, sorry. jmd andere?
01.02.2022 10:44:13
Alwin
das passiert, wenn keine funktionierende Datei vorhanden ist und man das ins Blaue schreibt. So müßte es gehen:

Private Sub ListviewLaden()
Dim i As Long, iLetzte As Integer, y As Long
iLetzte = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
With ListView1
.ListItems.Clear
For i = 2 To iLetzte
.ListItems.Add , , Tabelle1.Cells(i, 1)
For y = 1 To 2
.ListItems(i - 1).SubItems(y) = Tabelle1.Cells(i, y + 1)
Next y
Next i
End With
End Sub
Gruß Uwe
AW: Nein, sorry. jmd andere?
01.02.2022 11:01:11
Dani
Hallo Uew
Donnerwetter es funktioniert Einwand frei.
Danke dir tausend mal für die Super tolle Hilfe
Nicht zu Letzt möchte ich mich noch bei allen Bedanken die mir geholfen haben.
Beste Grüße aus der Schweiz
Dani
Anzeige
AW: Nein, sorry. jmd andere?
02.02.2022 13:58:46
Dani
Hallo Uwe
Beim deinem Code habe ich erst jetzt festgestellt das nur die ersten 3 Spalten befüllt werden die Restlichen nicht.

Private Sub ListviewLaden()
Dim i As Long, iLetzte As Integer, y As Long
iLetzte = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
With ListView1
.ListItems.Clear
For i = 2 To iLetzte
.ListItems.Add , , Tabelle1.Cells(i, 1)
For y = 1 To 2
.ListItems(i - 1).SubItems(y) = Tabelle1.Cells(i, y + 1)
Next y
Next i
End With
End Sub
Danach habe ich noch teilweise den Code geändert bei diesem Code werden alle Spalten gefüllt jedoch wieder das gleiche Blödsinn bei der erste Spalte A (Tag) werden Doppel und dreifach die Daten eingetragen.

Private Sub ListviewLaden()
Dim spuZeile As Long, spuZeileMax As Long, spuSpalte As Long
Dim DaniZ As Long
spuZeileMax = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
DaniZ = 1
For spuZeile = 2 To spuZeileMax
With ListView1
.ListItems.Add , , Tabelle1.Cells(DaniZ, 1).Value
.ListItems(DaniZ).SubItems(1) = Tabelle1.Cells(spuZeile, 2)
.ListItems(DaniZ).SubItems(2) = Tabelle1.Cells(spuZeile, 3)
.ListItems(DaniZ).SubItems(3) = Tabelle1.Cells(spuZeile, 4)
.ListItems(DaniZ).SubItems(4) = Tabelle1.Cells(spuZeile, 5)
.ListItems(DaniZ).SubItems(5) = Tabelle1.Cells(spuZeile, 6)
.ListItems(DaniZ).SubItems(6) = Tabelle1.Cells(spuZeile, 7)
DaniZ = DaniZ + 1
End With
Next spuZeile
End Sub
Nun die Frage an euch wie muss der Code lauten das es keine doppelte einträge in der Spalte A (Tage) gibt
Besten Dank für eure prompte Hilfe
Gruß
Dani
Anzeige
For y = 1 To 2 in 1 to 6 ändern owT
02.02.2022 14:46:38
Yal
AW: For y = 1 To 2 in 1 to 6 ändern owT
03.02.2022 10:01:31
Dani
Hallo
Besten Dank jetzt werden die Daten eingelesen.
Da hätte ich noch eine Frage
Wie muss ich es formatieren das beim Listview in der spalte D / E / F und G in Format hh:mm formatiert wird.
Bei der Tabelle und Textbox da habe ich es auf Format hh:mm formatiert. Nur in Listview wird es in dezimal angezeigt
Vielen lieben Dank für eure Hilfe
Gruß
Dani
AW: For y = 1 To 2 in 1 to 6 ändern owT
03.02.2022 11:36:33
Yal
Dann doch kein For I 1 to 6, sondern einzeln

With ListView1
.ListItems.Add , , Tabelle1.Cells(DaniZ, 1).Value
.ListItems(DaniZ).SubItems(1) = Tabelle1.Cells(spuZeile, 2)
.ListItems(DaniZ).SubItems(2) = Format (Tabelle1.Cells(spuZeile, 3), "hh:mm")
.ListItems(DaniZ).SubItems(3) = Format (Tabelle1.Cells(spuZeile, 4), "hh:mm")
.ListItems(DaniZ).SubItems(4) = Format (Tabelle1.Cells(spuZeile, 5), "hh:mm")
.ListItems(DaniZ).SubItems(5) = Format (Tabelle1.Cells(spuZeile, 6), "hh:mm")
.ListItems(DaniZ).SubItems(6) = Tabelle1.Cells(spuZeile, 7)
End With
VG
Yal
Anzeige
AW: For y = 1 To 2 in 1 to 6 ändern owT
03.02.2022 14:59:53
Dani
Hallo Yal
Besten Dank für die prompte Hilfe
Ich habe jetzt folgenden Code nur eins nervt das jetzt auch die Überschrift doppelt angezeigt wird was mache ich falsch?
Könntest du / Ihr noch mal den Code überprüfen Besten Dank dafür.
Dim spuZeile As Long, spuZeileMax As Integer
Dim DaniZ As Long
spuZeileMax = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
DaniZ = 1
With ListView1
.ListItems.Clear
For spuZeile = 1 To 6 & spuZeileMax
.ListItems.Add , , Tabelle1.Cells(DaniZ, 1).Text
.ListItems(DaniZ).SubItems(1) = Tabelle1.Cells(spuZeile, 2)
.ListItems(DaniZ).SubItems(2) = Format(Tabelle1.Cells(spuZeile, 3), "hh:mm")
.ListItems(DaniZ).SubItems(3) = Format(Tabelle1.Cells(spuZeile, 4), "hh:mm")
.ListItems(DaniZ).SubItems(4) = Format(Tabelle1.Cells(spuZeile, 5), "hh:mm")
.ListItems(DaniZ).SubItems(5) = Format(Tabelle1.Cells(spuZeile, 6), "hh:mm")
.ListItems(DaniZ).SubItems(6) = Format(Tabelle1.Cells(spuZeile, 7), "hh:mm")
DaniZ = DaniZ + 1
Next spuZeile
End With
Gruß
Dani
Die erste Schritte sind die schwierigsten
03.02.2022 15:21:54
Yal
Hallo Dani,
um die Antwort zu verstehen, musst Du ein Grundwissen über Programmablauf und -struktur haben.
Du scheinst es noch nicht zu haben und kann nur den Code in Copy/paste deins machen und dich wundern, warum es nicht funktioniert.
Denk mal nach, was diese

For spuZeile = 1 To 6 
bewirken soll!
Was soll dann

For spuZeile = 1 To 6 & spuZeileMax
bewirken? Ein Zahl plus(+) ein Zahl, ok. Ein Zahl und(&) ein Zahl?
i = 1 To 6 soll die Spalten ansprechen, nicht die Zeilen. Hat es dich nicht gewundert, dass Uwe deine 6 Programmzeilen in:

For y = 1 To 2
.ListItems(i - 1).SubItems(y) = Tabelle1.Cells(i, y + 1)
Next y
geändert hatte?
Ausserdem hast Du bei Copy/paste den .ListItems.Clear übersehen.

Private Sub ListviewLaden()
Dim i As Long
Dim Idx As Long
With ListView1
.ListItems.Clear
For i = 2 To Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
.ListItems.Add , , Tabelle1.Cells(i, 1).Value
Idx = .ListItems.Count - 1
.ListItems(Idx).SubItems(1) = Tabelle1.Cells(i, 2)
.ListItems(Idx).SubItems(2) = Format(Tabelle1.Cells(i, 3), "hh:mm")
.ListItems(Idx).SubItems(3) = Format(Tabelle1.Cells(i, 4), "hh:mm")
.ListItems(Idx).SubItems(4) = Format(Tabelle1.Cells(i, 5), "hh:mm")
.ListItems(Idx).SubItems(5) = Format(Tabelle1.Cells(i, 6), "hh:mm")
.ListItems(Idx).SubItems(6) = Format(Tabelle1.Cells(i, 7), "hh:mm")
Next i
End With
End Sub
Ich hoffe, Du kommst damit zurecht.
Thread abgeschlossen.
VG
Yal
AW: Die erste Schritte sind die schwierigsten
03.02.2022 18:14:53
Daniel
Hallo Yal
Danke Danke dir 1000 mal fürs Aufklären, Ja da hast du recht mir fehlt das Grundwissen. Mit solchen Problem lerne ich am besten.
Nun zu deinem Code, wenn ich so übernehmen würde wie abgebildet, dann kommt eine Fehlermeldung. Danach noch mals den Code von Uwe und mit deiner Aufklärung neu geschrieben. Jetzt funktioniert es prima

Private Sub ListviewLaden()
Dim i As Long
Dim Idx As Long
With ListView1
.ListItems.Clear
For i = 2 To Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
.ListItems.Add , , Tabelle1.Cells(i, 1).Value
Idx = .ListItems.Count - 1
.ListItems(Idx).SubItems(1) = Tabelle1.Cells(i, 2)
.ListItems(Idx).SubItems(2) = Format(Tabelle1.Cells(i, 3), "hh:mm")
.ListItems(Idx).SubItems(3) = Format(Tabelle1.Cells(i, 4), "hh:mm")
.ListItems(Idx).SubItems(4) = Format(Tabelle1.Cells(i, 5), "hh:mm")
.ListItems(Idx).SubItems(5) = Format(Tabelle1.Cells(i, 6), "hh:mm")
.ListItems(Idx).SubItems(6) = Format(Tabelle1.Cells(i, 7), "hh:mm")
Next i
End With
End Sub
Hier noch den angepassten Code funktioniert Einwand frei.

Private Sub ListviewLaden()
Dim i As Long, iLetzte As Integer, y As Long
iLetzte = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
With ListView1
.ListItems.Clear
For i = 2 To iLetzte
.ListItems.Add , , Tabelle1.Cells(i, 1)
For y = 1 To 2
.ListItems(i - 1).SubItems(2) = Tabelle1.Cells(i, 2 + 1)
.ListItems(i - 1).SubItems(3) = Format(Tabelle1.Cells(i, 3 + 1), "hh:mm")
.ListItems(i - 1).SubItems(4) = Format(Tabelle1.Cells(i, 4 + 1), "hh:mm")
.ListItems(i - 1).SubItems(5) = Format(Tabelle1.Cells(i, 5 + 1), "hh:mm")
.ListItems(i - 1).SubItems(6) = Format(Tabelle1.Cells(i, 6 + 1), "hh:mm")
Next y
Next i
End With
Noch mal möchte ich mich bedanke für eure Hilfe
Beste Grüss
Dani

AW: Die erste Schritte sind die schwierigsten
03.02.2022 19:31:17
Yal
Hallo Dani,

For y = 1 To 2
.ListItems(i - 1).SubItems(2) = Tabelle1.Cells(i, 2 + 1)
.ListItems(i - 1).SubItems(3) = Format(Tabelle1.Cells(i, 3 + 1), "hh:mm")
.ListItems(i - 1).SubItems(4) = Format(Tabelle1.Cells(i, 4 + 1), "hh:mm")
.ListItems(i - 1).SubItems(5) = Format(Tabelle1.Cells(i, 5 + 1), "hh:mm")
.ListItems(i - 1).SubItems(6) = Format(Tabelle1.Cells(i, 6 + 1), "hh:mm")
Next y
Wenn Du das einfach in deutsche Sprache liest:
ich nehme die Werte 1 in die Variable y und mache alles bis zum "next"
dann nehme ich die Werte 2 in die Variable y und ..bis next.
Was bewirkt den y=1 oder den y=2 in dem For-Next-Block? Du läufst zweimal genau demselben Code durch. Nichts ist darin von y abhängig.
Probiere mal mit For y=5000 To 5032
Es wird genau demselben Ergebnis liefern, nur dass dann 33 mal das gleich gemacht wird, anstatt 2 mal.
Der Grund, warum mein Code nicht funktioniert (ich habe keine Datei von Dir bekommen und ListView auch nicht nachgebaut. ListView kenne ich nicht), ist dass der ListView-Index mit 1 und nicht mit 0 anfängt.
Daher sollte folgende Code funkionieren (siehst Du die unterschied zu vorher):

Private Sub ListviewLaden()
Dim i As Long
Dim Idx As Long
With ListView1
.ListItems.Clear
For i = 2 To Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
.ListItems.Add , , Tabelle1.Cells(i, 1).Value
Idx = .ListItems.Count
.ListItems(Idx).SubItems(2) = Format(Tabelle1.Cells(i, 3), "hh:mm")
.ListItems(Idx).SubItems(3) = Format(Tabelle1.Cells(i, 4), "hh:mm")
.ListItems(Idx).SubItems(4) = Format(Tabelle1.Cells(i, 5), "hh:mm")
.ListItems(Idx).SubItems(5) = Format(Tabelle1.Cells(i, 6), "hh:mm")
.ListItems(Idx).SubItems(6) = Format(Tabelle1.Cells(i, 7), "hh:mm")
Next i
End With
End Sub
Es ist dabei wichtig, dass der Zähler für den ListView (idx) unabhängig von Zeilennummer in der Quelle (i) läuft. Nur so kannst Du vom Startzeile 2 auf Startzeile x wechseln, ohne an 6 verschiedenen Stellen etwas anpassen zu müssen.
Übrigens: warum überspringst Du

.ListItems(Idx).SubItems(1) = Tabelle1.Cells(i, 2)
?
VG
Yal
AW: Die erste Schritte sind die schwierigsten
03.02.2022 21:23:11
Daniel
Hallo Yal
Besten Dank für die Erklärung, und Ja du hast recht For y schleife bring nichts habe Sie gelöscht.
Eine Datei habe ich auch hochgeladen siehe Antworterprofil Nein, sorry. jmd andere? - von Yal am 31.01.2022 17:13:05
Dein Code werde ich selbstverständlich noch mal Testen.
Den Listview brauche ich nur als Schaufenster, um die Daten im anderem Programm zu übertragen.
Ich bin dran eine Userform zu erstellen. Um die Arbeitszeit zu errechnen.
Nach Folgenden Kriterien wird die Arbeitszeit errechnet.
1. Fixzeit beim Kunden
2. Wegzeit
3. Pause
4 Korrekturzeit entweder minus oder plus je nach dem.
5 Total Zeit ergibt dann die Arbeitszeit
So mal als grob gesagt
Besten Dank und Freundlicher Gruss
Dani
ah ja, jetzt ja, eine Datei ...
03.02.2022 21:56:19
Yal
... mit einem ListView. Mann, diese Thread ist ellenlang. Sorry, mein Fehler.
Schönen Abend
VG
Yal
AW: ah ja, jetzt ja, eine Datei ...
03.02.2022 22:12:59
Daniel
Hallo Yal
Kein Problem, schliesslich muss ich mich bedanken das Ihr mir hilft.
LG
Dani
AW: ah ja, jetzt ja, eine Datei ...
03.02.2022 22:24:47
Alwin
Hallo Dani,
Ich dachte der Fall wäre erledigt gewesen und hatte bloß mal neugierig hier vorbeigeschaut.
Nun habe ich die Datei mal etwas umgebaut, da dieses Konstrukt früher oder später eh wieder hier gelandet wäre. Die Combobox wird jetzt so gefüllt, dass bei Erweiterung in Tabelle2 diese Änderungen mit in die Combo übergeben werden. Code aus dem Netz kann manchmal hilfreich sein, aber oftmals passt einfach der Topf nicht zum Deckel. Maßnahmen gegen Eingabefehler habe ich nicht eingebaut. Diese sind aber noch zwingend erforderlich. Z.B.: Doppeleingaben verhindern etc.
https://www.herber.de/bbs/user/150860.xlsm
Gruß Uwe
AW: ah ja, jetzt ja, eine Datei ...
04.02.2022 00:08:09
Daniel
Hallo Uwe
Vielen lieben Dank für die Überarbeitung der Datei.
Ja da habe ich noch was zu tun bis es Fertig ist, vor allem die Zeit Berechnung dies wir wohl ein grosser brocken werden .
Freundlicher Gruss
Dani

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige