我正在尝试在VBA中执行重新定位功能。 很明显我有一些语法问题,我是菜鸟。 我目前的做法:
Dim i As Integer
For i = 1 To 100
Rows("i:i").Select
Selection.Replace What:="i.xlsx", Replacement:="i+1.xlsx", LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next i
任何人都可以帮我纠正i的语法吗?而不是100行,我想循环直到文件结束,我该怎么做?
感谢您的帮助
答案 0 :(得分:3)
"i"
是一个字符串文字;因此,它的值在循环执行期间保持不变:无论"i"
的值如何,它始终为i
。
如果您希望变量i
作为搜索/替换字符串的一部分(例如12.xlsx
),那么您需要连接其字符串表示形式; What:=i & ".xlsx"
和Replacement:=i + 1 & ".xlsx"
。
避免非常脆弱的.Select
指令也很容易。使用您感兴趣的范围,而不是使用Selection
。
Rows("i:i").Replace ...
或者你的意思是"i:i"
也是你的循环计数器?因为Range("I:I")
指向列 I.如果您打算在第12次迭代时执行Rows("12:12")
,那么您还需要在那里连接范围地址:
Rows(i & ":" & i).Replace ...
如果情况并非如此,那么随着循环的进行,您将需要注意@Jeeped's comment关于值的状态。