Board logo

標題: [發問] 陣列索引超出範圍請教 [打印本頁]

作者: bulletin    時間: 2014-2-3 20:34     標題: 陣列索引超出範圍請教

各位前輩好

目前正在寫一個程式,要抓取個股的財報資料,並整理到同一表格
執行的excel為財報統計表.xlsx
A1 = 1101, A2 = 1102, A3 = 1103...等個股代碼
個股財報為 1101季報、1102季報...等,excel頁面如下圖
[attach]17412[/attach]

程式碼如下
執行後會產生 "陣列索引超出範圍"的視窗

Sub Getdata()
    For i = 2 To 5
        Dim WB1 As Workbook
            Workbooks.Open Filename:="C:\Users\user\Documents\KT\投資理財\Excel分析模組\" & Range("A" & i) & "季報.xlsx", UpdateLinks:=False, ReadOnly:=True
            Set WB1 = ActiveWorkbook

            With Workbooks(財報統計表).Worksheets("sheet1")
                Range("E" & i).FormulaR1C1 = "=[" & Range("A" & i) & "季報.xlsx]ISQ!R4C2"
                Range("F" & i).FormulaR1C1 = "=[" & Range("A" & i) & "季報.xlsx]ISQ!R5C2"
            End With

        WB1.Close
    Next i   
End Sub

若使用"On Error Resume Next"
程式執行會讀取正確資料,但我還是想知道真正問題出在哪...

1. 請教錯誤出現在哪個地方?
         一開始測試可執行                                   Range("E" & i).FormulaR1C1 = "=[1101季報.xlsx]ISQ!R4C2"
         修改後, 加入變數便產生錯誤                Range("E" & i).FormulaR1C1 = "=[" & Range("A" & i) & "季報.xlsx]ISQ!R4C2

2. With sheet1的情況下,不是應該都要寫成 " .range(....) "嗎?為何在此不必增加 "."呢?

謝謝各位前輩指教~
作者: zxcxz    時間: 2014-2-3 21:13

財報統計表是變數?
加"."是指With 內的Workbooks,不加"."指activeworkbook
作者: bulletin    時間: 2014-2-3 22:04

可能我沒有說明清楚
在"財報統計表.xlsx"內執行程式
抓取同一個資料夾內的 "1101季報.xlsx", "1102季報.xlsx"...等

加 "."的意思我懂
我以為開啟workbook就會把開啟的那一個變成activeworkbook.....
多謝釋疑~
作者: Hsieh    時間: 2014-2-3 22:34

本帖最後由 Hsieh 於 2014-2-3 22:40 編輯

回復 3# bulletin
放在'Workbooks("財報統計表.xlsm")的模組
  1. Sub Getdata()
  2.     For i = 2 To 5
  3.         Dim WB1 As Workbook
  4.             Set WB1 = Workbooks.Open (Filename:="C:\Users\user\Documents\KT\投資理財\Excel分析模組\" & Range("A" & i) & "季報.xlsx", UpdateLinks:=False, ReadOnly:=True)
  5.              With Thisworkbook.Worksheets("sheet1")   'Workbooks("財報統計表.xlsm")
  6.                 Range("E" & i).FormulaR1C1 = "=[" & Range("A" & i) & "季報.xlsx]ISQ!R4C2"
  7.                 Range("F" & i).FormulaR1C1 = "=[" & Range("A" & i) & "季報.xlsx]ISQ!R5C2"
  8.             End With
  9.         WB1.Close
  10.     Next i   
  11. End Sub
複製代碼

作者: bulletin    時間: 2014-2-3 22:51

多謝超級版主回覆!!
我知道問題在哪了~
感恩~




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