Ich habe versucht, auf google und hier in StackOverflow zu suchen, aber ich kann nicht scheinen, den Code zusammen für meinen Zweck zu kleben. Ich verwende 2 Spalten. Der erste, um ein Datum einzugeben (TT-MM-JJJJ), der zweite, um die Zeit einzugeben (00:00:00). Ich habe bereits herausgefunden, wie man die Zeit alle 15 Minuten erhöht, aber jetzt habe ich das Problem, dass sich mein Datum nur ändern kann, wenn die Zeit auf 00:00:00 ist. Daher muss der Code für diese Zeit in Spalte B suchen. Also für meine Zeit Ich habe diese:VBA Inkrement Datum, wenn die Stunde Null ist
Sub AutomateTimeSeries
range("B5").Select
ActiveCell.FormulaR1C1 = "=R[-1]C + ""00:15"""
Selection.AutoFill
Destination:=range("B5:B2980"), Type:=xlFillDefault -
range("A4").Select
End Sub
So, jetzt muss ich für "00:00:00" aussehen in Spalte B gehen. Wenn ich das in der Zelle z. B98 Ich muss auf A98 springen und das Datum in vorheriges +1 ändern. Dafür brauche ich bereits ein Datum in den vorherigen Zellen. Der Benutzer wird ein Datum in der ersten präsentierten Zelle eingeben. Von dort an füllt das Makro alle Zellen in Spalte A mit diesem Datum. Ich habe diesen Teil des Makros verwendet:
Selection.AutoFill Destination:=range("A4:A2980"), Type:=xlFillCopy
Dies funktioniert aber ich brauche die Zelle in dieser speziellen A-Zelle enthält, 00.00.00 neben B-Zelle zu ändern. Wie könnte ich das bitte machen? Oder gibt es eine bessere Möglichkeit, die Verwendung von Date-Time zu erhöhen?
Um von der gefundenen Zelle nach links Ich habe versucht zu verwenden:
1/01/2017 23:15:00
1/01/2017 23:30:00
1/01/2017 23:45:00
2/01/2017 0:00:00
2/01/2017 0:15:00
2/01/2017 0:30:00
2/01/2017 0:45:00....
Hat jemand bitte eine Idee hat:
Sub IncreaseDate()
Dim a_lastrow As Integer 'last row of column A
Dim b_lastrow As Integer 'last row of column B
Dim ws As Worksheet
Set ws = Workbook.Worksheets("Sheet1")
With ws
a_lastrow = .Range("A3000").End(xlUp).Row
b_lastrow = .Range("B3000").End(xlUp).Row
For r = 1 To a_lastrow
If Application.WorksheetFunction.CountIf(.Range("B1:B" & b_lastrow), .Range("B" & r).Value) = "00:00:00" Then
.Range("A" & r).Value = "previous date + 1 day" '<==what's the code for this??????
End If
Next r
End With
MsgBox ("done")
If (Target.Column = 2) Then 'check if in 2nd column
If Target.Offset(, -1).Value = "" Then 'Check if there is already a value in Column A
Target.Offset(, -1).Value = Date ' No value, lets stick in the current system date
End If
End If
SAS DateLiteral
DateAdd
End Sub
So ist es, wie in etwa so aussehen sollte?
Sie könnten nur Formel verwenden. Geben Sie in Zelle A1: '28/11/2017 00: 00: 00' in Zelle A2 ein:' = SUM (A1, "00:15") '. In Zelle B1 geben Sie '= A1' ein. Nun geben Sie Spalte A ein benutzerdefiniertes Format von "d/mm/yyyy" und Spalte B ein benutzerdefiniertes Format von "hh: mm: ss". Wenn Sie die Formel nach unten ziehen, ändert sich das Datum, wenn Sie Mitternacht erreichen. –
Hallo Darren, danke für deine schnelle Antwort. Dies könnte eine Lösung sein, aber in meinem Fall muss ich für 30 bis 31 Tage fortfahren. und ich möchte das mit einem einzigen Klick auf eine Schaltfläche tun, so dass jeder andere nicht vba-Benutzer das verwenden kann ;-) – CD46
Ich werde als Antwort mit etwas VBA-Code hinzufügen. –