【发布时间】:2013-11-06 17:10:45
【问题描述】:
这段代码仍然给我一个下标错误
Sub importData2()
ChDir "C:\Users\Desktop\Java"
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
Dim rng As Range
Set rng = Range(Selection, ActiveCell.SpecialCells(xlLastCell))
Dim wb As Workbook
Set wb = Application.Workbooks("30_graphs_w_Macro.xlsm")
Dim sh2 As Worksheet
Dim rng2 As Range
Set rng2 = Range("A69")
Dim wb2 As Workbook
For lngposition = LBound(filenum) To UBound(filenum)
Set wb2 = Application.Workbooks.Open(filenum(lngposition) & ".csv")
wb2.Worksheets(filenum(lngposition)).rng.Copy wb.Worksheets(filenum(lngposition)).rng2.Paste
Next lngposition
my_handler:
MsgBox "All done."
End Sub
这仍然给我一个下标错误:
Set wb2 = Application.Workbooks(filenum(lngposition) & ".csv")
我避免使用 .active 和 .select。 .选择。
【问题讨论】:
-
一个提示是删除 On Error GoTo 语句;这将显示导致错误的行,并更好地指导哪些行不工作。
-
同意 Richard.... 这不是错误处理程序,而是错误的完成消息。此外,我会删除您所有的 .Select 和 Selection。和 .Activate 引用。当您在 Excel 中创建宏时,它默认使用这种语言,但这确实是糟糕的编码。例如,您的 sh1.Activate、Range("A69").Select 和 ActiveSheet.Paste 行可以替换为 sh1.Range("A69").Paste。清理干净并删除 On err 行后,您就可以正确调试了。
-
好的,是的..确实有帮助,感谢您的提示。我在代码中进行了更改。所以现在我收到了找不到文件 052.csv 的消息。此 excel 文件(带有脚本)与文件 052.csv 本身位于同一位置。
-
这行给我一个运行时错误 1004:Workbooks.Add(filenum(lngPosition) & ".csv").Activate 说它可以找到文件
-
文件已经在excel中打开了吗?还是您尝试在代码中打开它?