返回列表 上一主題 發帖

Application.EnableEvents = True 失效

本帖最後由 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

TOP

本帖最後由 singo1232001 於 2022-11-20 20:36 編輯

回復 3# t8899


    ob.Visible = False 先改成 ob.Visible = true  
若要背景處理才用
    ob.Visible = False  
我複製時忘了改

另外路徑要改成你的完整路徑 跟之前open方式的路徑一樣

最後要在注意一下    ob.Visible = False 的情況下 中斷程序 可能會卡bug
在背景沒關閉  那就得用工作管理員去關閉excel了
就如同你開啟了一個看不見的excel 卡在背景關不掉

TOP

回復 5# t8899

20221121.zip (22.17 KB)

TOP

        靜思自在 : 做該做的事是智慧,做不該做的事是愚癡。
返回列表 上一主題