返回列表 上一主題 發帖

這種依時間運算的巨集要如何寫??

回復 4# GBKEE


    G大測試過後只有U欄和V欄有數字其他都顯示空白

TOP

回復 4# GBKEE

G大謝謝你的回覆,真的很感謝你,等等來試試看,謝謝

TOP

本帖最後由 GBKEE 於 2014-11-16 15:43 編輯

回復 3# 藍天麗池

試試看
  1. Option Explicit
  2. Dim i As Integer '(短整數)資料型態
  3. 'Public i As interger => 出現使用者型態尚未定義, 正確: Integer
  4. Sub Ex()
  5.     Dim xTime As Date
  6.     If Time >= #8:46:00 AM# And Time <= #1:45:00 PM# Then
  7.         With Sheets("RTD").Cells(i + 2, "T")
  8.                     'T欄公式=IF(ISERROR(MATCH(U2,P:P,0)),"",MATCH(U2,P:P,0))
  9.             .Range("A1") = "=IF(ISERROR(MATCH(RC[1],P:P,0)),"""",MATCH(RC[1],P:P,0))"
  10.                     'U欄
  11.             .Range("B1") = IIf(Minute(Time) Mod 2 = 0, Application.Sum(Range("A1:C1")), Application.Sum(Range("A2:C2")))
  12.                     'V欄
  13.             .Range("C1") = Time
  14.                     'W欄公式=IF(ISERROR(INDIRECT("O"&T2)),"",INDIRECT("O"&T2))
  15.             .Range("D1") = "=IF(ISERROR(INDIRECT(""O""&RC[-3])),"""",INDIRECT(""O""&RC[-3]))"
  16.                     'X欄公式=IF(W2="","",IF(W2>54,-1,IF(W2<6,1,"")))
  17.             .Range("E1") = "=IF(RC[-1]="""","""",IF(RC[-1]>54,-1,IF(RC[-1]<6,1,"""")))"
  18.                     'Y欄公式=IF(ISERROR(INDIRECT("R"&T2)),Y1,INDIRECT("R"&T2))
  19.             .Range("F1") = "=IF(ISERROR(INDIRECT(""R""&RC[-5])),R[-1]C,INDIRECT(""R""&RC[-5]))"
  20.             .Resize(, 6) = .Resize(, 6).Value  '將公式回數值
  21.         End With
  22.         i = i + 1
  23.         xTime = Time + #12:01:00 AM#
  24.         If xTime <= #1:45:00 PM# Then Application.OnTime xTime, "EX"
  25.     ElseIf Time < #8:46:00 AM# Then
  26.         Application.OnTime #8:46:00 AM#, "EX"
  27.     Else
  28.         MsgBox "時間已過"
  29.     End If
  30. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 藍天麗池 於 2014-11-16 10:29 編輯

改.rar (101.96 KB) 回復 2# PKKO

請問大大,會出現使用者型態尚未定義是什麼意思
另外,如果我要把Range("e" & i) = Application.WorksheetFunction.Sum(Range("A" & i & ":" & "C" & i + 2))裡面的SUM函數改成=IF(ISERROR(MATCH(U2,P:P,0)),"",MATCH(U2,P:P,0)),那請問一下巨集要怎麼改??

是改成Range("e" & i) = Application.WorksheetFunction.IF(ISERROR(MATCH(Range("U" & i +1& "," & "P" &":" & "P" & "," & "0"),"",MATCH(Range("U" & i +1& "," & "P" &":" & "P" & "," & "0"))改成這樣對嗎??

請問大大Range("A" & i & ":" & "C" & i + 2)裡面的範圍部分,除了用&的的方式有沒有其他寫法,因為公式如果很多的話會&不完

抱歉大大問題有點多,不過還是謝謝你的回覆

大大我有附上我的檔案,其實我要修改的是T、W、X欄的部分,因為直接寫在儲存格上面會造成運算變慢,所以我才會想用巨集的方式試試看,如果大大能直接幫我修改就真的是感激不盡,如果不能,還帆請大大幫我解答一下上面的問題,感謝

TOP

本帖最後由 PKKO 於 2014-11-16 01:36 編輯

回復 1# 藍天麗池

試試看
  1. Public i As interger
  2. Sub test1()
  3.     i = 1
  4.     Application.OnTime TimeValue("08:46:00"), "test2" '特定時間呼叫程式
  5. End Sub
  6. Sub test2()
  7.     Range("e" & i) = Application.WorksheetFunction.Sum(Range("A" & i & ":" & "C" & i + 2)) '輸入值
  8.    
  9.     If Hour(Time) = 13 Then '判斷小時
  10.         If Minute(Time) = 45 Then '判斷分
  11.             MsgBox "結束" '相同時分則不再進行
  12.         Else
  13.             Application.OnTime Now + TimeValue("00:01:00"), "test2" '一分鐘後運行
  14.         End If
  15.     Else
  16.         Application.OnTime Now + TimeValue("00:01:00"), "test2" '一分鐘後運行
  17.     End If
  18.     i = i + 1
  19. End Sub
複製代碼
PKKO

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題