2015-07-21 1810 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工作表,但仍然给我错误消息。 –