2015-07-21 1811 views
1

我有一個幾乎完整的VBA宏它運行正常,直到到達該行:VBA的Windows(指數).Activate導致運行時錯誤「9」:下標越界

Windows(temp_name).Activate 

當我運行這我得到以下錯誤:

Run-time error '9':

Subscript out of range

temp_name是我需要返回到文件的名稱。下面是解決這個(告訴我,如果更多的線路是必要的)一些行:

Next Ind 
Application.CutCopyMode = False 
Workbooks.OpenText Filename:=CPath _ 
    , Origin:=437, startRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _ 
    , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _ 
    Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _ 
    Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1)), _ 
    TrailingMinusNumbers:=True 
For Ind1 = 1 To iPlateNo 
TLCorn = "B" + CStr(iStartrow + (Ind1 - 1) * iStep) 
BRCorn = "M" + CStr(iStartrow + 7 + (Ind1 - 1) * iStep) 
RangeNOut = TLCorn + ":" + BRCorn 
RangeNIn = TLCorn 
Windows(FileN).Activate 
Range(RangeNOut).Select 
Selection.Copy 
Windows(temp_name).Activate 
Sheets("Data").Select 
Range(RangeNIn).Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Next Ind1 
' Calculation of background and efflux for individual plates 
For Ind1 = 1 To iPlateNo/2 
    iStep2 = (Ind1 - 1) * iStep * 2 
    iBgrRow = iStartrow + 8 + iStep2 
    BgrValP = Cells(iBgrRow, 2).Value 
    For Ind2 = 0 To 7 
     iEntryRow = iStartrow + Ind2 + iStep2 
     iEntryRow2 = iStartrow + Ind2 + iStep2 + 11 
     MediaVal = Cells(iEntryRow, 13).Value 
     MonoVal = Cells(iEntryRow2, 13).Value 
     Cells(iEntryRow, 15).Value = MEeff * 100 * Volcorr * (MediaVal - BgrValP)/(M40eff * MonoVal + Volcorr * MEeff * (MediaVal - BgrValP)) 
    Next Ind2 
Next Ind1 
+0

是你已經打開的工作簿?請注意,激活不會打開工作簿,它只是激活它(帶來焦點等) –

回答

0

嘗試

Workbooks(temp_name).Activate 

這將引用特定的Excel工作簿的實例,因爲我相信它是無法找到的工作簿時打算參考。假設表格(「數據」)是當前工作簿名稱保存在「temp_name」中的工作表?

感謝,

傑米

+0

謝謝,而數據是在temp_name工作表,但仍然給我錯誤消息。 –