我正在使用这个宏 - 在Sub格式中工作正常:
Sub replaceStringInCells()
Dim wTxt As String
Dim rTxt As String
Dim rNum As Integer
rNum = 0
For Each Row In Range("swapvalues").Rows '<== change the wordlist Name here as required
wTxt = Row.Cells(1).Value
rTxt = Row.Cells(2).Value
Selection.Replace What:=wTxt, Replacement:=rTxt, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
rNum = rNum + 1
Next
End Sub
我试图将其更改为函数 - 通过将Sub更改为Function,更新函数名称以及添加字符串参数:
Function replaceaccents(thestring As String)
Dim wTxt As String
Dim rTxt As String
Dim rNum As Integer
rNum = 0
For Each Row In Range("swapvalues").Rows '<== change the wordlist Name here as required
wTxt = Row.Cells(1).Value
rTxt = Row.Cells(2).Value
Selection.Replace What:=wTxt, Replacement:=rTxt, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
rNum = rNum + 1
Next
replaceaccents = thestring
End Function
但是,这只是输出原始单元格。
有没有办法让这项工作成为一种功能?
谢谢!
之所以发生这种情况,是因为函数完全返回输入值你想要输入'thestring'是为了什么?
函数返回一个值,它不是作为一个过程设计的,因此它只会更改调用它的单元格。
如果你想要替换重音(如你的函数名称所示),你应该将一个范围的引用作为参数(thestring作为Range),然后迭代字符串的字母,以便用a替换á,ü你等等。这是函数的更常见用法。然后,在电子表格中,您将其用作常规函数,仅引用要从中取出重音符号的单元格(如果这是用途)。
希望这有助于任何方式。