Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
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

uhrzeiten einlesen

uhrzeiten einlesen
01.10.2016 17:31:16
Thomas
Hallo Excelfreunde,
ich versuche gerade in zwei Spalten einer Listbox als Uhrzeiten einzulesen.
Dim wksBlatt As Worksheet, aBereich As Range
Dim lZeile As Long
Set wksBlatt = Worksheets("Adressen")
With wksBlatt
Set mrngData = .Range(.Cells(2, 1), .Cells.SpecialCells(xlCellTypeLastCell))
End With
With ListBox1
.ColumnCount = mrngData.Columns.Count
'.ColumnHeads = True
.List() = mrngData.Value
'.List(ListBox1.Columns.Count - 1, 2) = Format("hh:mm:ss")
'################################################################################
For lZeile = 1 To 100
mrngData(lZeile, 2) = Format(mrngData(lZeile, 2), "hh:mm:ss")
mrngData(lZeile, 5) = Format(mrngData(lZeile, 5), "hh:mm:ss")
Next
'##############################################################################
End With
es will einfach nicht funktionieren. Das dumme daran ist ich benötige das mrngData in dieser form wie es ist sonst funktioniert das suchmacro dahinter nicht mehr.
in meiner Beispieldatei habe ich mal ein paar meiner versuche drin gelassen
wahrscheinlich mache ich immer den gleiche Fehler.
https://www.herber.de/bbs/user/108545.xlsm
kann sich dies mal jemand anschauen?
besten dank schon mal im voraus für euer Interesse.
liebe grüsse thomas

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: uhrzeiten einlesen
01.10.2016 17:53:41
Bastian
Hey du könntst jha einfach nach dem einlesen die erste Reihe ändern
hier nach

.List() = mrngData.Value

For x = 0 To .ColumnCount - 1
.List(0, x) = Format(.List(0, x), "hh:mm:ss")
Next
Gruß BAsti
AW: uhrzeiten einlesen
01.10.2016 18:33:54
Thomas
Hallo BAsti
,,
erstmal besten dank das du dir dies mal angeschaut hast.
leider funktioniert dies nicht die Uhrzeiten erscheinen immer als 0,23222 unsw.
könnt ihr noch mal drüber schauen?
liebe grüsse thomas
AW: uhrzeiten einlesen
01.10.2016 19:09:32
Daniel
Hi
wenn dann so:
If IsNumeric(.List(0, x)) Then .List(0, x) = Format(CDbl(.List(0, x)), "hh:mm:ss")
das muss aber auch im Filtermakro ausgeführt werden, weil das die Daten nochmal liest.
gruß Daniel
Anzeige
AW: uhrzeiten einlesen
01.10.2016 19:58:39
Thomas
Hallo Daniel,
hab besten dank das du dir dies auch mal angeschaut hast.
Ich weiss einfach nicht wo ich das hinschreiben muss. zur zeit habe ich es so.
Dim wksBlatt As Worksheet, aBereich As Range
Dim lZeile As Long
Dim x
Set wksBlatt = Worksheets("Adressen")
With wksBlatt
Set mrngData = .Range(.Cells(2, 1), .Cells.SpecialCells(xlCellTypeLastCell))
End With
With ListBox1
.ColumnCount = mrngData.Columns.Count
'.ColumnHeads = True
.List() = mrngData.Value
End With
If IsNumeric(.List(0, x)) Then .List(0, x) = Format(CDbl(.List(0, x)), "hh:mm:ss")
es kommt jedoch immer zum Fehler.
wenn ich es so versuche
Dim wksBlatt As Worksheet, aBereich As Range
Dim lZeile As Long
Dim x
Set wksBlatt = Worksheets("Adressen")
With wksBlatt
Set mrngData = .Range(.Cells(2, 1), .Cells.SpecialCells(xlCellTypeLastCell))
End With
With ListBox1
.ColumnCount = mrngData.Columns.Count
'.ColumnHeads = True
.List() = mrngData.Value
'.RowSource = mrngData.Address(0, 0)
'.List(ListBox1.Columns.Count - 1, 2) = Format("hh:mm:ss")
End With
For x = 0 To 10
If IsNumeric(ListBox1.List(0, x)) Then ListBox1.List(0, x) = Format(CDbl(ListBox1.List(0, x)), "hh:mm:ss")
Next
kommt es zwar nicht zum fehler aber es kommen auch keine Uhrzeiten.
kannst du mir diese Zeile mal platzieren?
hab schon mal recht vielen dank für die Unterstützung.
liebe grüsse thomas
Anzeige
AW: uhrzeiten einlesen
01.10.2016 20:31:52
Daniel
Hi
du brauchst schon die ganze Schleife, dh alle 3 Zeilen
die Einzelzeile bringt dir nichts.
die Schleife läuft ober die oberste Zeile der Listbox und wandelt die Texte (in eine Listbox stehen immer Texte) zunächst in Zahlen um und formatierst diese dann als Uhrzeit.
diese Code musst du immer dann laufen lassen, nachdem du die Listbox mit Werten aus der Tabelle befüllt hast.
Wo das in deinem Code passiert, müsstest du am Besten wissen, es ist ja schließlich dein Code. beispielsweise läuft nach dem Einlesen der Wer noch das Makro FILTER, welches die Werte auch nochmal in die Listbox schreibt und damit alles wieder überschriebt.
der Code müsste also idealerweise am Ende des Makros FILTER stehen, oder immer nachdem dieses Makro ausgeführt wurde.
Gruß Daniel
Anzeige
ich habe es fast
01.10.2016 21:14:44
Thomas
Hallo Daniel,
besten dank für deine tipps und deine hilfe.
wie du beschrieben hast läuft es in der ersten zeile. Da sehe ich schon Uhrzeiten. Wie mache ich es damit alle gefüllten zeilen durchgelaufen werden.
mein jetziger versuch scheint ein wenig zu dumm zu sein.
x = 1
'For x = 0 To 10
If IsNumeric(ListBox1.List(0, x)) Then ListBox1.List(0, x) = Format(CDbl(ListBox1.List(0, x)), "hh:mm:ss")
x = x + 1
schaust du noch mal?
liebe grüsse thomas
AW: ich habe es fast
01.10.2016 22:16:50
Daniel
Hi
wenns über alle Zeilen laufen soll, dann noch mit eienr Zusatzschleife über die Zeilen

With Listbox1
for z 0 to .ListCount - 1
for s = 0 to .ColumnCount - 1
if IsNumeric(.List(z, s)) then if CDbl(.List(z, s)) 
Gruß Daniel
Anzeige
AW: ich habe es fast
01.10.2016 22:53:23
Thomas
Hallo Daniel,
besten dank für deine mühe,
jedoch muss da noch was foul sein.
Der Code startet und läuft und läuft.
Ich konnte ihn nur mit einem zwangsende von Excel beenden.
Ich habe dann die Daten auf 5 zeilen reduziert aber es war das gleiche.
was könnte da noch foul sein ?
liebe grüsse thomas
AW: ich habe es fast
01.10.2016 22:57:03
Daniel
da ist sicherlich an deinem Code was faul
aber da ich deinen Code nicht kenne, kann ich dir auch nicht sagen was es ist.
Gruß Daniel
AW: ich habe es fast
02.10.2016 00:09:01
Thomas
Hallo Daniel,
besten dank für deine Geduld mit mir.
ich habe noch ein wenig rumgebastelt und etwas gefunden was so la la funktioniert.
aber auch dies ist ziemlich langsam.
Ich denke das es womöglich die schleifen sind die das ganze so langsam machen,
vielleicht hat noch jemand eine Idee wie es schneller gehen könnte deshalb lasse ich es mal als offen.
der funktionierende aber sehr langsame Code ist
Dim x
Dim s
With ListBox1
'For s = 0 To .ColumnCount - 1
For x = 0 To .ListCount - 1
.List(x, 3) = Format(.List(x, 3), "hh:mm:ss")
.List(x, 4) = Format(.List(x, 4), "hh:mm:ss")
Next
' Next
End With
in jedem fall sage ich aber dir vielen vielen dank für deine Unterstützung.
liebe grüsse thomas
Anzeige
Daniel es geht jetzt
02.10.2016 00:43:55
Thomas
Hallo Daniel,
ich habe die bremse gefunden.
hab vielen dank für deine Unterstützung.
liebe grüsse thomas
AW: Daniel es geht jetzt
02.10.2016 12:37:44
Daniel
Hi
sehr gut.
In der Beispieldatei war auffällig, das die "LastCell" deutlich ausserhalb des benutzen Bereichs lag und somit die Tabelle viel grösser wurde als eigentlich benötigt.
Hier würde es also helfen, die überflüssigen Spalten und Zeilen zu löschen.
ansonsten ist es ja so, dass in einer normal aufgebauten Tabelle die Uhrzeiterte nicht wild verteilt über alle Spalten und Zeilen stehen (ausser die Tabelle enthätl nur Uhrzeitwerte) sondern entweder in allen Spalten von bestimmten Zeilen oder in allen Zeilen von bestimmten Spalten.
Dh es reicht dann, mit einer Schleife über alle Zeilen oder alle Spalten zu gegen und die Doppelschleife über Zeilen und Spalten ist unnötig.
Gruß Daniel
Anzeige
das prüfe ich noch
02.10.2016 13:41:10
Thomas
Hallo Daniel,
diese Tipps werde ich mir heut noch anschauen.
in jedem Fall besten dank du hast mir echt geholfen.
liebe grüsse thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige