在这个excel vba脚本中下标超出范围错误

我想从csv文件复制数据到Excel工作表。 有11个CSV文件。 到目前为止,我有这个(这是以前的post修改后的版本):

Sub importData() Dim filenum(0 To 10) As Long filenum(0) = 052 filenum(1) = 060 filenum(2) = 064 filenum(3) = 068 filenum(4) = 070 filenum(5) = 072 filenum(6) = 074 filenum(7) = 076 filenum(8) = 178 filenum(9) = 180 filenum(10) = 182 Dim sh1 As Worksheet On Error GoTo my_handler For lngPosition = LBound(filenum) To UBound(filenum) 'Windows(filenum(lngPosition) & ".csv").Activate Workbooks.Add(filenum(lngPosition) & ".csv").Activate Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Windows("30_graphs_w_Macro.xlsm").Activate Set sh1 = Worksheets(filenum(lngPosition)).Activate Range("A69").Paste Range("A69").Select Next lngPositionlngPositionlngPosition my_handler: MsgBox "All done." Exit Sub End Sub 

这段代码给了我一个下标超出范围的错误

 Set sh1 = Worksheets(filenum(lngPosition)).Activate 

请帮我解决这个问题。 此外,如果有任何其他提示如何改善此代码,请让我知道

设置sh1 =工作表(filenum(lngPosition))。激活

您正在获取下Subscript out of range error错误,因为它无法find该工作表。

另外请…请…请不要使用。 .Select/.Activate/Selection/ActiveCell您可能想要了解如何避免在Excel VBAmacros中使用select 。

这看起来比你以前的版本好一点,但摆脱这一点。激活该行,看看你是否仍然得到这个错误。

 Dim sh1 As Worksheet set sh1 = Workbooks.Add(filenum(lngPosition) & ".csv") 

创build一个工作表对象。 直到你创build该对象,你想开始使用它。 一旦你有这个对象,你可以做到以下几点:

 sh1.Range("A69").Paste sh1.Range("A69").Select 

sh1。 明确地告诉Excel您要使用哪个对象…否则,如果您在此代码运行时开始select其他工作表,则可能会将数据粘贴到错误的地方。