Application.EnableEvents = True 失效
- 帖子
- 766
- 主題
- 256
- 精華
- 0
- 積分
- 1035
- 點名
- 0
- 作業系統
- windows 11
- 軟體版本
- OFFICE2021
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2011-5-30
- 最後登錄
- 2026-10-2
|
Application.EnableEvents = True 失效
1.xls已開啟 Application.EnableEvents = True 作用中
開了2.xls 後, 1.xls發生事件Private Sub Worksheet_Calculate()都無法作用??
sub test()
Application.EnableEvents = False '已測試有無此行沒差
For Each wb In Workbooks
If wb.Name = "2.xls" Then GoTo 58
Next
Workbooks.Open Filename:="k:\xls3\2.xls"
58:
If Windows("2xls").Visible = False Then
Windows("2.xls").Visible = True
ElseIf Windows("2.xls").Visible = True Then
Windows("2.xls").Visible = False
End If
Application.EnableEvents = True 'event已無法作用
End Sub
要在1.xls執行
sub tes2()
Application.EnableEvents = True
end sub
才會重起作用 |
|
|
|
|
|
|
|
- 帖子
- 766
- 主題
- 256
- 精華
- 0
- 積分
- 1035
- 點名
- 0
- 作業系統
- windows 11
- 軟體版本
- OFFICE2021
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2011-5-30
- 最後登錄
- 2026-10-2
|
本帖最後由 t8899 於 2022-11-20 19:39 編輯
回復 t8899
當程序複雜到一定程度 會產生類似問題
最終解決方案就是設一個廣域變數
放在程序外 ...
singo1232001 發表於 2022-11-20 16:44 
Set os = ob.Workbooks.Open(路徑)
這指令還無法開檔?請教如何開檔? |
|
|
|
|
|
|
|
- 帖子
- 766
- 主題
- 256
- 精華
- 0
- 積分
- 1035
- 點名
- 0
- 作業系統
- windows 11
- 軟體版本
- OFFICE2021
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2011-5-30
- 最後登錄
- 2026-10-2
|
本帖最後由 t8899 於 2022-11-21 06:50 編輯
回復 t8899
ob.Visible = False 先改成 ob.Visible = true
若要背景處理才用
ob.Visibl ...
singo1232001 發表於 2022-11-20 20:33 
1 ob.Visible = true
這行執行完會多一個沒用的灰色視窗 (沒用到),可否省掉?
2 少一行 Public ob As Object ?
ob.ActiveWorkbook.Close
ob.Quit
Set ob = Nothing
Set os = Nothing
Set osh = Nothing
關檔這5行放在另一巨集,無法成功 ?
3 ob.ActiveWorkbook.Close
這命令關閉會問要不要存檔??請教要存跟不要存指令如何下? |
|
|
|
|
|
|
|
- 帖子
- 766
- 主題
- 256
- 精華
- 0
- 積分
- 1035
- 點名
- 0
- 作業系統
- windows 11
- 軟體版本
- OFFICE2021
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2011-5-30
- 最後登錄
- 2026-10-2
|
我原本的問題已經解決了,開檔後暫停15秒就解決了
2.xls 裡面有940個資料交換(DDE)要等到完全更新完,才可以執行 Application.EnableEvents = True
15秒的等待,原本用DO loop,因為更新沒有順序,不知最後一筆更新是那一筆?只好抓15秒的等待時間
Workbooks.Open Filename:="k:\xls3\2.xls"
DSTOP = Now: Do While Now - DSTOP < TimeValue("0:00:15"): DoEvents: Loop '暫停15秒
多學了一個開檔的方法也不錯 |
|
|
|
|
|
|
|