- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2025-7-5
|
2#
發表於 2016-2-14 22:27
| 只看該作者
本帖最後由 luhpro 於 2016-2-14 22:32 編輯
下面Workbook原本有3個VBA,自從加入了第4個VBA後,第2個VBA的效果開始有了點問題(EXCEL2000版),
是甚麼地 ...
RCRG 發表於 2016-2-12 14:14 
沒檔案可以試, 未實測純推測,你可以套用看看 (PS. 測試前請記得先備份).
有可能是:
Set xB = Workbooks.Open(xFile, ReadOnly:=True)
這一行又去呼叫 Workbook_Open 程序,
而它又會去執行到 第2個VBA,
以致產生非預期的結果.
一般要避免此類情形我會考慮用以下兩種方式之一:
1. 執行程序前,先把觸發行為開關關掉,執行完再打開:
Application.EnableEvents = False
Set xB = Workbooks.Open(xFile, ReadOnly:=True)
Application.EnableEvents = True
2. 設置旗標控制(旗標一般須為全域變數)是否要觸發:
Module-
Public bOpen As Boolean
Workbook_Open-
Private Sub Workbook_Open()
If bOpen Then Exit Sub
Call 檢測資料檔: If xMsg = "" Then GoTo 999 '第1個VBA
.
.
.
bOpen = True
Set xB = Workbooks.Open(xFile, ReadOnly:=True)
bOpen = False
.
.
. |
|