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

问题描述 投票:1回答:1

我正在使用这个宏 - 在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

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

有没有办法让这项工作成为一种功能?

谢谢!

excel vba
1个回答
1
投票

之所以发生这种情况,是因为函数完全返回输入值你想要输入'thestring'是为了什么?

函数返回一个值,它不是作为一个过程设计的,因此它只会更改调用它的单元格。

如果你想要替换重音(如你的函数名称所示),你应该将一个范围的引用作为参数(thestring作为Range),然后迭代字符串的字母,以便用a替换á,ü你等等。这是函数的更常见用法。然后,在电子表格中,您将其用作常规函数,仅引用要从中取出重音符号的单元格(如果这是用途)。

希望这有助于任何方式。

© www.soinside.com 2019 - 2024. All rights reserved.