可以将该子宏重写为函数吗?

时间:2018-09-18 17:15:53

标签: excel vba

我正在使用此宏-在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名称,并添加字符串参数:

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

但是,这只是输出原始单元格。

有什么办法可以使它作为功能工作?

谢谢!

1 个答案:

答案 0 :(得分:1)

之所以会这样,是因为该函数恰好返回了输入值。您想要输入“ thestring”做什么?

一个函数返回一个值,它不是设计为充当过程的,所以它只会更改调用它的单元格。

如果要替换重音符号(如函数名称所建议的那样),则应将对范围的引用作为参数(将字符串命名为Range),然后迭代字符串的字母以将á替换为,ü和u等。这是函数的更常见用法。然后,在电子表格中,您可以将其用作常规功能,只需引用要从中删除重音的单元格即可。

希望这对您有帮助。