Dim I As Integer '(短整數)資料型態'Public i As interger => 出現使用者型態尚未定義, 正確: Integer
Sub Ex()
Dim xTime As Date
If Time >= #8:45:00 AM# And Time <= #1:30:00 PM# Then
With Sheets("RTD").Cells(I + 3, "T").Resize(, 6)
.Offset(-2).Value = .Offset(-2).Value '上一列:將公式回數值
'T欄公式=IF(ISERROR(MATCH(U2,P:P,0)),"",MATCH(U2,P:P,0))
.Range("A1") = "=MATCH(RC[1],R3C[-19]:R70000C[-19],1)+2"
'X欄公式=IF(W2="","",IF(W2>54,-1,IF(W2<6,1,"")))
.Range("E1") = "=SUM(INDIRECT(""B""&R[-1]C[-4]+1):INDIRECT(""B""&RC[-4]))"
'Y欄公式=IF(ISERROR(INDIRECT("R"&T2)),Y1,INDIRECT("R"&T2))
.Range("F1") = "=SUM(INDIRECT(""C""&R[-1]C[-5]+1):INDIRECT(""C""&RC[-5]))"
'W欄公式=IF(ISERROR(INDIRECT("O"&T2)),"",INDIRECT("O"&T2))
.Range("C1") = "=RC[-2]-R[-1]C[-2]"
'X欄公式=IF(W2="","",IF(W2>54,-1,IF(W2<6,1,"")))
'.Range("E1") = "=IF(RC[-1]="""","""",IF(RC[-1]>54,-1,IF(RC[-1]<6,1,"""")))"
'Y欄公式=IF(ISERROR(INDIRECT("R"&T2)),Y1,INDIRECT("R"&T2))
'.Range("F1") = "=IF(ISERROR(INDIRECT(""R""&RC[-5])),R[-1]C,INDIRECT(""R""&RC[-5]))"
'.Resize(, 6) = .Resize(, 6).Value '將公式回數值
End With
I = I + 1
xTime = Time + #12:01:00 AM#
If xTime <= #1:45:00 PM# Then Application.OnTime xTime, "EX"
ElseIf Time < #8:45:00 AM# Then
Application.OnTime #8:45:00 AM#, "EX"
Else
MsgBox "時間已過"
End If
End Sub
上面是我目前在執行程式的程式碼,請問一下版上前輩,如果要將上述程式碼改成一樣在8:45-13:45分執行,但執行條件改為每分鐘的秒數到57秒執行程式,到下分鐘的01秒將上一個執行的公式寫成值,這樣要如何更改程式碼呢?
例;8:45:57秒執行以下功能,8:46:01秒將8:45:57秒執行的公式轉成值,8:46:57秒一樣執行程式,8:47:01秒一樣轉換成值,依此類推,一直執行到13:45,這樣的程式碼要如何更改?
.Range("A1") = "=MATCH(RC[1],R3C[-19]:R70000C[-19],1)+2"
'X欄公式=IF(W2="","",IF(W2>54,-1,IF(W2<6,1,"")))
.Range("E1") = "=SUM(INDIRECT(""B""&R[-1]C[-4]+1):INDIRECT(""B""&RC[-4]))"
'Y欄公式=IF(ISERROR(INDIRECT("R"&T2)),Y1,INDIRECT("R"&T2))
.Range("F1") = "=SUM(INDIRECT(""C""&R[-1]C[-5]+1):INDIRECT(""C""&RC[-5]))"
'W欄公式=IF(ISERROR(INDIRECT("O"&T2)),"",INDIRECT("O"&T2))
.Range("C1") = "=RC[-2]-R[-1]C[-2]"
'X欄公式=IF(W2="","",IF(W2>54,-1,IF(W2<6,1,"")))
'.Range("E1") = "=IF(RC[-1]="""","""",IF(RC[-1]>54,-1,IF(RC[-1]<6,1,"""")))"
'Y欄公式=IF(ISERROR(INDIRECT("R"&T2)),Y1,INDIRECT("R"&T2)) |