Board logo

標題: [發問] 未指定活頁簿名稱,單檔案跑正常,為何雙檔案跑會錯誤? [打印本頁]

作者: PKKO    時間: 2015-12-10 23:45     標題: 未指定活頁簿名稱,單檔案跑正常,為何雙檔案跑會錯誤?

各位大大好,

小弟愚昧想請教一下
我的程式觸發都是寫在:
Private Sub Worksheet_Activate()
Private Sub Worksheet_Change(ByVal Target As Range)
或是在分頁內的按鈕

而所有的程式碼都是針對本檔案的內容作變更,完全沒有任何一個程式碼是使用到workbooks(XX)的這種指定檔案名稱
例如:
r = Target(1).Row
Cells(r + 1, 12).Resize(2, 100).Value = Cells(r - 1, 12).Resize(2, 100).Value
name1 = Cells(r, 10).Value
dbs=sheets("AA").[a1].resize(5,5).value
[a2]=dbs(1,1)

為何我開著另外一個excel檔案,兩個檔案同時作業的時候(copy 資料到另一個檔案)

會發生陣列超出範圍的錯誤?有甚麼可能性?
因為這是我同事告訴我的錯誤,我並不曉得他錯在哪一行的程式碼,所以想問一下有可能這樣錯嗎?
照理來說我都沒指定活頁簿,因該就代表著activate的活頁簿阿?
作者: Joforn    時間: 2015-12-11 08:28

Cells(r + 1, 12).Resize(2, 100).Value = Cells(r - 1, 12).Resize(2, 100).Value
像這樣的引用,Cells對象正是當前被激活的工作表中的對象。
作者: PKKO    時間: 2015-12-11 09:40

回復 2# Joforn

對阿,所以即便兩個活頁簿的切換

理應不會造成影響才對

因為我都沒有指定活頁簿名稱~
作者: Joforn    時間: 2015-12-11 16:46

回復  Joforn

對阿,所以即便兩個活頁簿的切換

理應不會造成影響才對

因為我都沒有指定活頁簿名稱 ...
PKKO 發表於 2015-12-11 09:40


那個是系統自動切換的。比如你先打了包含這段代碼的工作簿,那麼當前工作簿就是本身,然後再開啟另一個工作簿,那麼當前工作簿就自動切換成了最新的工作簿,你這時再切換Window轉回有代碼的工作簿,這時當前工作簿又轉換回來了。當前工作表指的就是正在活動的工作簿中的活動狀態下的工作表。形像點來說,就是所有Windows最大化之後被顯示出來的那個工作表。它不是一個常量,而是會根據系統和用戶的操作而不停變換的對象。
作者: PKKO    時間: 2015-12-11 19:42

回復 4# Joforn


    這我了解

所以照理來說,我有寫程式碼的地方,因該永遠都不會變成另外一個沒有程式碼的檔案而造成錯誤才對啊!
作者: Joforn    時間: 2015-12-11 21:10

各位大大好,

小弟愚昧想請教一下
我的程式觸發都是寫在:

Private Sub Worksheet_Change(ByVal Target As Range)
或是在分頁內的按鈕

而所有的程式碼都是針對本檔案的內容作變更,完全沒有任何一個程式碼是使用到workbooks(XX)的這種指定檔案名稱
例如:
r = Target(1).Row
Cells(r + 1, 12).Resize(2, 100).Value = Cells(r - 1, 12).Resize(2, 100).Value
name1 = Cells(r, 10).Value
dbs=sheets("AA").[a1].resize(5,5).value
[a2]=dbs(1,1)
PKKO 發表於 2015-12-10 23:45

你上面的代碼寫在了Worksheet_Change中?如果是的話應該會導致堆桟溢出錯誤。應該你自己運行測試也會有錯誤提示的。
你能不能把你的完整的事件處理過程貼出來?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)