VBA替换 - 语法错误?

时间:2018-02-27 16:33:47

标签: excel vba excel-vba replace syntax

我正在尝试在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行,我想循环直到文件结束,我该怎么做?

感谢您的帮助

1 个答案:

答案 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关于值的状态。