Application.EnableEvents = True 失效
- 帖子
- 354
- 主題
- 5
- 精華
- 0
- 積分
- 387
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- vba,vb,excel2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2017-1-8
- 最後登錄
- 2024-8-2
 
|
本帖最後由 singo1232001 於 2022-11-20 16:47 編輯
回復 1# t8899
當程序複雜到一定程度 會產生類似問題
最終解決方案就是設一個廣域變數
放在程序外
例如
public xxx as boolean
sub test()
xxx = true
end sub
這樣處理後
在觸發事件
就能用 if xxx= false then 的方式避開
但還有一種情況 比較特別
你遇到應該是這種情況 碰到有開啟工作簿的操作
關閉的excel 本身還在背景並未真正關閉 大概就是整片都灰色的
這種方是我目前只知道一種解決方式 (或許還有更好的方法 請高手補充)
就是用set 的方式開啟工作簿 避免關閉關不乾淨
Set ob = CreateObject("Excel.Application")
ob.Visible = False
Set os = ob.Workbooks.Open(路徑)
Set osh = ob.Sheets("工作表1")
ob.ActiveWorkbook.Close
ob.Quit
Set ob = Nothing
Set os = Nothing
Set osh = Nothing |
|
|
|
|
|
|
|
- 帖子
- 354
- 主題
- 5
- 精華
- 0
- 積分
- 387
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- vba,vb,excel2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2017-1-8
- 最後登錄
- 2024-8-2
 
|
本帖最後由 singo1232001 於 2022-11-20 20:36 編輯
回復 3# t8899
ob.Visible = False 先改成 ob.Visible = true
若要背景處理才用
ob.Visible = False
我複製時忘了改
另外路徑要改成你的完整路徑 跟之前open方式的路徑一樣
最後要在注意一下 ob.Visible = False 的情況下 中斷程序 可能會卡bug
在背景沒關閉 那就得用工作管理員去關閉excel了
就如同你開啟了一個看不見的excel 卡在背景關不掉 |
|
|
|
|
|
|
|
- 帖子
- 354
- 主題
- 5
- 精華
- 0
- 積分
- 387
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- vba,vb,excel2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2017-1-8
- 最後登錄
- 2024-8-2
 
|
|
|
|
|
|
|
|