H大,開啟EXCEL的時候,
If .[J12].Value >= 10 Then
這一行,出現資料型態不符,是因為沒有定義嗎?
我把它按偵測,然後關閉,再按開始巨集,就可以開始運作了。作者: Hsieh 時間: 2012-2-13 14:07
回復 18#leefing
這可能是開啟檔案時,DDE還沒連上時,[J12]出現#N/A的錯誤所致
Sub Catch_DDE()
MsgBox "J1數值變動" '此行測試是否J12的DDE更新,可取消
With Sheet1
If IsError(.[J12]) Then Exit Sub
If .[J12].Value >= 10 Then
If .[D12] = .[F12] Then .[U12] = .[U12] + .[J12]
If .[E12] = .[F12] Then .[T12] = .[T12] + .[J12]
End If
End With
End Sub作者: leefing 時間: 2012-2-13 14:34
End Sub
上述[A1]為開關,只有在[A1]=1時,方執行Catch_DDE
另避免Calculate觸發後,所執行的程序尚未執行完畢又再觸發而產生錯誤,
建議觸發後將 Application.EnableEvents = False
結束後再將 Application.EnableEvents = True
如上例改為
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
if [A1]=1 then Call Catch_DDE
Application.EnableEvents = True
End Sub
If IsError(.[J12]) Then Exit Sub 這一行 怎麼加不上去,出現編譯錯誤
研判您是在盤中修改程式,dde一直更新,不斷觸發Calculate,程式碼寫不完就觸發事件,當然產生錯誤,
如以後需盤中修改,建議可用複製程式碼再貼上或在修改的行上先加 ' ,變成註解後再編寫,完成後再刪除 '