У меня есть следующий код. Но цикл if-else
выполняется неправильно. То есть MsgBox (Hour(strTime))
печатает 14
,Неправильное выполнение внутри if else loop
Так If (Hour(strTime) = 17 & Minute(time) = 31 & Weekday(time) <> 1 & Weekday(time) <> 2)
должен не Execute. Но это все равно. Оцените, есть ли у кого-нибудь ошибки в коде. С наилучшими пожеланиями
Private RunWhen As Date
Private Const StartTime As Date = #2:14:30 PM#
Private Const EndTime As Date = #5:34:55 PM#
Private Const cRunInterval = "00:01:00"
Private Const cRunWhat = "Data" ' the name of the procedure to run
Sub StartTimer()
Dim strTime
strTime = time
If RunWhen = 0 Then
RunWhen = StartTime
Else
RunWhen = RunWhen + TimeValue(cRunInterval)
End If
MsgBox (Hour(strTime))
If (RunWhen <= EndTime & Weekday(time) <> 1 & Weekday(time) <> 2) Then
If (Hour(strTime) = 17 & Minute(time) = 31 & Weekday(time) <> 1 & Weekday(time) <> 2) Then
'MsgBox ("Mail")
Call CDO_Mail_Small_Text
Else
If (Hour(strTime) = 17 & Minute(time) = 33 & Weekday(time) <> 1 & Weekday(time) <> 2) Then
MsgBox ("clear")
Call ClearData
Else
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=True
End If
End If
End If
End Sub
Sub Data()
Dim RowNo As Long
Dim RowNo2 As Long
RowNo = Sheets(1).Cells(Rows.Count, 11).End(xlUp).Row
RowNo2 = Sheets(1).Cells(Rows.Count, 14).End(xlUp).Row + 1
Sheets(1).Cells(RowNo2, 15) = Sheets(1).Cells(RowNo, 11)
Sheets(1).Cells(RowNo2, 16) = Sheets(1).Cells(RowNo, 12)
Sheets(1).Cells(RowNo2, 17) = Sheets(1).Cells(RowNo, 13)
Sheets(1).Cells(RowNo2, 14) = time
StartTimer ' Reschedule the procedure
End Sub
Спасибо, я программировал много javascript ... Забыл, что у VBA есть 'AND': P Я не получаю никаких неопределенных ошибок и теперь имею опцию явным образом. – user1665355
Рад это слышать. Я полностью понимаю трудности при переключении языков. Я уверен, что это случается с лучшими из нас! –