【发布时间】:2019-06-02 14:03:14
【问题描述】:
我需要编写一个函数来根据在工作表中查找的值对字符串进行多次替换。
我的意图是遍历工作表中的替换对列表,并为每次迭代调用工作簿函数“替换”。
Function multiSub(original As Range, replaceList As Range)
Dim temp1 As String
Dim temp2 As String
Dim temp3 As String
' temp1 = replaceList.Offset(0, 0).Value
' temp2 = replaceList.Offset(0, 1).Value
temp1 = "from"
temp2 = "to"
multiSub = Application.WorksheetFunction.Substitute(original, temp1, temp2)
End Function
如果您按原样获取代码,那么它会起作用,因为如果我创建的函数中的第一个参数指向带有单词“”的单元格,它将用单词“to”替换单词“from”从“在它的某个地方。
但是,如果我注释掉 temp1 或 temp2 的分配并取消注释其他行,我会得到 #Value!工作表中的错误。
有趣的是,即使我将一个不相关的变量(比如 temp3)分配给这些范围偏移量之一并保持 temp1 和 temp2 引用硬编码字符串,它仍然以相同的方式失败。
为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
替换列表是两个单元格的水平范围吗?
-
可能:它是一个水平为两个,垂直为任意数字的列表。左边是原件,右边是替换件。
-
敬畏那是一个完全不同的野兽。
标签: excel vba range offset substitution