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

[VBA] Addition von Minuten zu ben.def. Format?

[VBA] Addition von Minuten zu ben.def. Format?
Minuten
Hi Leute,
ich habe ein Problem, es geht um ein Makro, das Fehlende Daten einer Zeile ergänzt.
Ich habe auf Grund der Komplexität das ganze erst einmal für einfache, ganze Zahlen programmiert, das sieht dann so aus:
1
2
3
5
8
10
und folgender code fügt die fehlenden zahlen der reihe ein:

Do Until ActiveCell.Offset(1, 0).Value = ""
If ActiveCell.Offset(1, 0).Value  ActiveCell.Value + 1 Then
ActiveCell.Offset(1, 0).EntireRow.Insert
ActiveCell.Offset(1, 0).FormulaR1C1 = "=R[-1]C+  1  "
ActiveCell.Offset(1, 0).Copy
ActiveCell.Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
ActiveCell.Offset(1, 0).Select
End If
Loop

ich brauche das ganze allerdings für eine Kombination aus Datum und UHrzeit im Format "dd:mm:yyyy hh:nn " und er soll nicht eine ganze Zahl wie im Codebeispiel, sondern 2 Minuten zum vorherigen Wert dazu addieren.
Habt ihr da eine Idee wie ich sowas in vba umsetzen kann? bin noch ziemlich unbedarft was das angeht...
Vielen dank und liebe Grüße,
Jan

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Addition von Minuten
11.03.2010 18:03:58
Minuten
Hi Jan,
probiers mal damit:

Option Explicit
Sub Einfueg()
Dim zz As Long, datN As Date
zz = 1                                                ' Start in Zeile 2
While Cells(zz + 1, 1)  ""
zz = zz + 1
datN = Round(Cells(zz, 1).Value + 1 / 720, 12)     ' 2 Minuten sind 1/720
If Round(Cells(zz + 1, 1).Value, 12) > datN Then
Rows(zz + 1).Insert
Cells(zz + 1, 1).Value = datN
End If
Wend
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Addition von Minuten
12.03.2010 08:28:20
Minuten
Hi Erich,
Danke! Der Code funktioniert noch nicht ganz so wie er es sollte, aber immerhin addiert er die zwei Minuten so wie ich es mir vorgestellt habe, das ist schon eine sehr große Hilfe!
Ich melde mich nochmal, wenn ich eine Lösung gefunden habe.
LG,
Jan
Anzeige
AW: Addition von Minuten
12.03.2010 08:51:55
Minuten
Nachtrag:
In Zeile 6 und Zeile 10 fügt das Makro jeweils den bereits vorhandenen Wert von Zeile 5 bzw. 9 ein. und das bei jedem Ausführen des Makros. Ausserdem fängt er erst ab der zweiten Zeile an zu korrigieren, aber das ist weniger wild.
ab Zeile 1 und weniger genau gerundet
12.03.2010 09:21:54
Erich
Hallo Jan,
geschickt wäre gewesen, wenn du mal einige deiner Daten gepostet hättest...
Das Makro fing bei Zeile 2 an, weil üblicherweise in Zeile 1 Spaltenüberschriften stehen.
Probier das mal:

Sub Einfueg2()
Dim zz As Long, datN As Date
While Cells(zz + 1, 1)  ""
zz = zz + 1
datN = Round(Cells(zz, 1).Value + 1 / 720, 10)     ' 2 Minuten sind 1/720
If Round(Cells(zz + 1, 1).Value, 10) > datN Then
Rows(zz + 1).Insert
Cells(zz + 1, 1).Value = datN
End If
Wend
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: ab Zeile 1 und weniger genau gerundet
12.03.2010 09:34:23
Jansen
Ja, da hast du recht, sorry - beim nächsten mal mach ichs besser :)
Aber das hat jetzt alles funktioniert, danke für deine Mühe!
Was bedeutet das ", 10" bzw vorher ",12" hinter dem value?
LG, Jan
Ohne Runden
12.03.2010 12:06:22
Erich
Hallo Jan,
danke für deine Rückmeldung!
Die ", 10" bzw. ", 12" gehören zur Round-Funktion. Mit diesem 2. Parameter wird vorgegeben,
auf wie viele Nachkommastellen genau gerundet werden soll.
In diesem Fall war meine erste Vorgabe ", 12" Unfug und wirkungslos,
denn vor dem Komma stehen (durch das Datum) ohnehin schon 5 Stellen (40249 = Heute()).
Da Excel (wie die meisten anderen Programme) nur mit 15 Stellen genau rechnen kann,
gehen also nur 10 Nachkommastellen.
1/10 Sekunde (als kleinste in Excel so darstellbare Zeit) hat den Wert ca. 0,000001157407.
Damit reicht fogender Code auch aus:

Sub Einfueg3()
Dim zz As Long, datN As Date
While Cells(zz + 1, 1)  ""
zz = zz + 1
datN = Cells(zz, 1).Value + 1 / 720          ' 2 Minuten sind 1/720
If Cells(zz + 1, 1).Value > datN + 0.0000001 Then
Rows(zz + 1).Insert
Cells(zz + 1, 1).Value = datN
End If
Wend
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Ohne Runden
14.03.2010 17:59:40
Jan
ah ok, jetz wird mir einiges klar.
Ich danke dir für deine Hilfe und probier am Montag morgen den letzten Code mal auf.
Ziemlich trickige Sache, mit dem Runden, aber du hast mir sehr geholfen!
LG,
Jan

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige