如何重命名用户定义的函数

时间:2014-12-09 11:51:40

标签: excel-vba vba excel

在我(非常复杂的)Excel工作簿中,我使用了很多用户定义的函数。这没有问题。

现在我想重命名其中的几个函数,因为最初选择的一些函数名称不是很好。如果我在VBA编辑器中天真地重命名它们,则工作簿不再起作用,因为工作簿中公式中用户定义函数的名称不会自动重命名。

我现在只有两种可能性:

  1. 保留功能名称并处理它
  2. 在我的工作簿的所有工作表中的每个公式中手动重命名函数。
  3. 是否有更有效的方法来重命名所有公式中的所有用户定义函数?

2 个答案:

答案 0 :(得分:2)

选择2 - 具有良好命名的功能是非常好的练习(你可能知道它们现在意味着什么,但是在6个月的时间里,或者其他人必须照顾它的时候呢?)

第一项工作 - 重命名该功能。很容易。其次,在VBA中找到函数被调用的所有地方。点击Ctrl+F,选择Current Project并搜索功能名称。

最后,您可以在工作簿上执行相同的操作。点击Ctrl-F,转到Replace标签。检查Within是否设置为工作簿,Look in设置为公式。

由于这是StackOverflow,我觉得没有为Find& amp;发布VBA解决方案。在工作簿中替换:

Cells.Replace What:="OldFunctionName", Replacement:="NewFunctionName", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

但是,要小心你要替换的值 - 如果你有Function a()这样的功能名称,那么就做一个发现& a上的替换可能会导致各种问题。

答案 1 :(得分:1)

我想你必须用这种函数解析所有工作表中的所有单元格,小心你替换的值:

Sub replaceFormulaNameInWS(ByRef ws As Worksheet, ByVal toReplace As String, ByVal rePlaceBy As String)
Dim r As Range
Set r = ws.UsedRange
For Each cell In r
If InStr(cell.Formula, toReplace) > 0 Then
    cell.Formula = Replace(cell.Formula, toReplace, rePlaceBy)
End If
Debug.Print cell.Formula
Next
End Sub