vba程式再跑時出現執行階段錯誤1004應用程式或物件定義上錯誤
- 帖子
- 43
- 主題
- 12
- 精華
- 0
- 積分
- 72
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- win 8.0
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2016-2-9
- 最後登錄
- 2020-4-13

|
vba程式再跑時出現執行階段錯誤1004應用程式或物件定義上錯誤
請教大大:
因為是新手請大大幫忙
這是哪裡出現問題呀
要如何更改
Public Sub 匯出收盤價()
Application.ScreenUpdating = False
Sheets("清單").Select
V = Range("A2").End(xlDown).Row
Dim a()
Dim b()
ReDim a(V - 1)
ReDim b(V - 1)
Sheets("收盤價網路").Select
For i = 0 To V - 1
a(i) = Cells(i * 10 + 8, 2)
b(i) = Cells(i * 10 + 13, 2)
Next
ChDir "C:\Users\michael\Desktop\108\focvs.xlsm"(目前改為ChDir "C:\Users\michael\Desktop\108")
Workbooks.Open Filename:="C:\Users\michael\Desktop\108\focvs.xlsm"
Sheets("清單").Select
For i = 2 To Range("A1").End(xlDown).Row
Sheets("清單").Select
k = Cells(i, 2)
If k = "" Then Exit For
Sheets(k).Select
h = Range("b3").End(xlDown).Row
Cells(h + 1, "b") = a(i- 2)
Cells(h + 1, "e") = b(i- 2)
Next
Windows("網路資料抓取.xlsm").Activate
Sheets("網路收盤價").Select
Application.CutCopyMode = True
Workbooks("focus. xlsm ").Save
Workbooks("focus. xlsm ").Close
Application.ScreenUpdating = True
MsgBox "更新完畢!", vb0XOnly, "通知"
End Sub
現目前跑到這裡
cells(h+1,"b")=a(i-2)
cells(h+1,"e")=b(i-2)出現執行階段錯誤1004應用程式或物件定義上錯誤
ps:我開一個檔案網路資料抓取工作表有清單及收盤價網路另一個focus工作表有清單及各公司的收盤價資料
chdir "c:\users\michael\desktop\108"
workbooks.open filename:="c:\users\michael\desktop\108\focus.xlsm"
網路資料抓取和focus檔案都存放在c:\users\michael\desktop\108檔案夾裡面 |
-
-
股票.rar
(138.84 KB)
|
michael
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
2#
發表於 2016-2-14 08:59
| 只看該作者
本帖最後由 c_c_lai 於 2016-2-14 09:30 編輯
回復 1# chairles59
假設: B2 = 股價; B3 (含) 以下均為空白- h = Range("b3").End(xlDown).Row
- ' h = 1048576
- h = Range("b2").End(xlDown).Row
- ' h = 1048576
複製代碼 所以- Cells(h + 1, "b") = a(i- 2)
- Cells(h + 1, "e") = b(i- 2)
複製代碼 為- Cells(1048576 + 1, "b") = a(i- 2)
- Cells(1048576 + 1, "e") = b(i- 2)
複製代碼 當然會出現執行階段錯誤1004應用程式或物件定義上錯誤
須改成:- h = Range("B" & Rows.Count).End(xlUp).Row
- ' h = 2
複製代碼 或者是- h = Range("b1").End(xlDown).Row
- ' h = 2
複製代碼 如此- Cells(2 + 1, "b") = a(i- 2)
- Cells(2 + 1, "e") = b(i- 2)
複製代碼 |
|
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
3#
發表於 2016-2-14 09:02
| 只看該作者
回復 1# chairles59
又發現你原先定義為- For i = 0 To V - 1
- a(i) = Cells(i * 8 + 5, 2) ' 成交
- b(i) = Cells(i * 8 + 9, 2) ' 總量
- Next
複製代碼 目前你將它改成- For i = 0 To V - 1
- a(i) = Cells(i * 10 + 8, 2)
- b(i) = Cells(i * 10 + 13, 2)
- Next
複製代碼 我不太明白你的用意。
接下來你自行來修正吧。 |
|
|
|
|
|
|
- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
4#
發表於 2016-2-15 07:05
| 只看該作者
回復 1# chairles59
本相關類似「提問」以後請在『Excel程式區』或是『Excel一般區』中提出發表,
而非在此 『管理公告』區裡提問,否則是無人留意而幫你釋疑的。 |
|
|
|
|
|
|
- 帖子
- 43
- 主題
- 12
- 精華
- 0
- 積分
- 72
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- win 8.0
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2016-2-9
- 最後登錄
- 2020-4-13

|
5#
發表於 2016-3-5 20:27
| 只看該作者
回復 3# c_c_lai
感謝大大的指點
因為是新人,又是剛學VBA所以有不對的地方請多包涵跟指教
以後我會去正確的地方發表
謝謝 |
|
michael
|
|
|
|
|