iT邦幫忙

0

VBA 運行複製貼上.出現執行階段錯誤'9': 陣列索引超出範圍.找不到原因.求幫忙!!

Sub 複製到志雍資料表()
'先A列取最後一行判斷需複製範圍
Dim rowNum As Long
rowNum = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:K" & rowNum).Select
Selection.Copy
Workbooks.Open ("D:\業物用\香港NG訂貨單\uibottest\志雍訂貨單.xlsm")
Workbooks("D:\業物用\香港NG訂貨單\uibottest\志雍訂貨單.xlsm").Activate
Workbooks("D:\業物用\香港NG訂貨單\uibottest\志雍訂貨單.xlsm").Sheets("零件價格表").Range("A2").Select
ActiveSheet.Paste
Workbooks("D:\業物用\香港NG訂貨單\uibottest\志雍訂貨單.xlsm").Close savechanges:=True
Application.CutCopyMode = False
End Sub

按下偵錯後停在這一行
'''Workbooks("D:\業物用\香港NG訂貨單\uibottest\志雍訂貨單.xlsm").Activate'''
但是我看不出來這一行哪裡有問題?所以找不到問題點.

目前我是新手訓練期間不能進行 回應 !
還請大家見諒!!
不是不回文感謝.是系統不讓我回文.
目前我用手動來完成我要的複製到其它工作簿功能.
但是沒效率又很麻煩.
所以想說自己寫一個VBA來解決.
不過我沒真正的學過VBA.
所以只有看過幾天的VBA相關教學
自己用錄製巨集來修改出這個VBA.
不過確顯示出錯誤.
我不知到錯誤發生在哪裡.
所以希望有高手可以指出錯誤並幫忙寫一個正確的VBA給我學習.
先謝謝您了.

我有A.B.C.三個工作簿
假設現在A欄最後一比資料為5000
我需要將他同步複製目前的資料到B跟C工作簿中的指定工作表中。
則VBA需要先會判斷目前最後一行是多少.
如果是5001則同步內容會變成
A2:H5001
我想在A.B.C三個工作簿的需要同步更新資料的工作表各建議一個VBA按鈕
按下後能同步其它未開啟的不同工作簿的指定需同步工作表的資料
例如在A工作簿的需要同步資料的工作表按下VBA按鈕後.
B跟C工作簿裡需要同步的那個工作表就會更新資料到跟A工作簿需要同步的那個工作表內容一樣.

按下A工作表的同步按鈕後.
VBA應該要先做A工作簿的A工作表的A2:H5000是我們指定要複製的內容範圍複製起來.
然後VBA會去背景開啟B工作簿的B工作表將貼上A工作表A2:H5000工作表的內容
然後存檔關閉B工作表
接下來到VBA會去背景開啟C工作簿的C工作表將並貼上A工作表A2:H5000工作表的內容然後存檔關閉C工作表.

然後在B工作簿的需要同步資料的工作表按下後.
A跟C需要同步的那個資料表就會更根新資料到跟A工作簿需要同步的那個工作表內容.

在C工作簿的需要同步資料的工作表按下後.
A跟B需要同步的那個資料表就會更根新資料到跟A工作簿需要同步的那個工作表內容.
這樣的話不管我目前是在A或B或C工作簿只要我按下按鈕我就可以同步其它兩個需要同步的工作簿內容.

用連結外部資料來同步的話我覺得比較麻煩.使用中會不能修改檔案.
所以才想說這樣比較方便.而且不會有資料連結錯誤的問題.

只是我想請問用這種複製貼上的方式.
以後資料月來越多的話.VBA能承受受得了嗎.會不會直接就當掉了?

我找到問題了~
原來是'''Workbooks("D:\業物用\香港NG訂貨單\uibottest\志雍訂貨單.xlsm").Activate'''
只有.open需要完整路徑
Workbooks("志雍訂貨單.xlsm").Activate --- 這樣就對了.

1 個回答

我要發表回答

立即登入回答