excel - 第二次循环后下标超出范围
问题描述
我正在做一个项目,该项目将找到一个 csv 文件,打开它,拉出一个特定的列,然后将其转置到打开的工作簿中的特定位置,然后移动到列表中的下一个文件名。目前,代码通过前两个循环工作,但随后卡在下面代码中的“Workbooks(fname).Activate”。我已经发现错误是由于 ActiveCell.Offset 一旦它运行通过第二个循环而发生的,但我无法弄清楚为什么它会在前两个循环中起作用然后停止。任何帮助,将不胜感激!
Sub x1853_Get_ALL_Dim3()
Dim fname As String
Dim Name As String
Dim Path As String
Dim Path2 As String
Sheets("Sheet1").Select
Range("A6").Select
Do Until ActiveCell.Value = ""
fname = Path2 & ActiveCell.Value
Path = ThisWorkbook.Path
Path2 = Path & "\Pull\"
ChDrive Path2
ChDir Path2
Name = ThisWorkbook.Name
Application.ScreenUpdating = False
Workbooks.Open Filename:=fname, Local:=True
ActiveWindow.SmallScroll Down:=0
Range("B3:B300").Select
ActiveWindow.SmallScroll Down:=-15
Selection.Copy
Workbooks(Name).Activate
ActiveCell.Offset(0, 2).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Workbooks(fname).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close SaveChanges:=False
ActiveCell.Offset(0, -2).Range("A1").Select
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
End Sub
解决方案
Workbooks.Open
返回您应该捕获的工作簿引用。改变:
Workbooks.Open Filename:=fname, Local:=True
到
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:=fname, Local:=True)
然后参考wb
而不是Workbooks(fname)
。
也许更重要的是,您应该了解如何避免使用 Select并相应地修改您的代码。
推荐阅读
- git - 从提交历史中删除已推送的提交
- angular - 如何在innerHtml angular上执行属性绑定
- java - 无法在回收站视图之外正确地从 firebase Realtime 获取值的总和
- python - 通过从嵌套字典中获取值来比较和匹配字典中的值,并从另一个字典中引用
- javascript - this.$emit 不是 ajax 成功请求中的函数
- c++ - 正确的空指针检查和声明
- python - PyTorch ResNet-18:计算修剪后的参数
- visual-studio-code - 在 glsl-canvas 中指定编辑器而不是使用活动编辑器
- reactjs - 在父级中调用函数并将数据传输给子级
- tensorflow - 具有数字和字符串数据的意图聊天机器人