在我的(非常复杂的)Excel工作簿中,我使用了很多用户定义的函数。这工作没有问题。如何重命名用户定义的函数
现在我想重新命名其中的几个函数,因为最初选择的一些函数名称并不是很好。如果我在VBA编辑器中以天真的方式重新命名它们,则工作簿不再起作用,因为工作簿中公式中用户定义函数的名称不会自动重命名。
我现在只有两种可能:
- 离开函数名,因为它们和应付它
- 手动重命名功能,每一个公式,在我的工作簿的所有工作表。
是否有更有效的方法来重命名所有公式中的所有用户定义函数?
在我的(非常复杂的)Excel工作簿中,我使用了很多用户定义的函数。这工作没有问题。如何重命名用户定义的函数
现在我想重新命名其中的几个函数,因为最初选择的一些函数名称并不是很好。如果我在VBA编辑器中以天真的方式重新命名它们,则工作簿不再起作用,因为工作簿中公式中用户定义函数的名称不会自动重命名。
我现在只有两种可能:
是否有更有效的方法来重命名所有公式中的所有用户定义函数?
进入2 - 具有良好的命名函数是非常好的做法(你可能知道他们现在都是什么意思,但是在6个月的时间里,或者当别人需要照顾时呢?)
第一份工作 - 重命名该函数。很简单。其次,在VBA中找到函数被调用的地方。点击Ctrl+F
,选择Current Project
并搜索函数名称。
最后,您可以在工作簿上进行基本相同的操作。点击Ctrl-F
,进入Replace
标签。检查Within
是否设置为工作簿,Look in
设置为公式。
由于这是StackOverflow的,我会觉得不能不张贴VBA解决方案,查找替换&在工作簿:
Cells.Replace What:="OldFunctionName", Replacement:="NewFunctionName", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
然而,小心你更换什么样的价值观 - 如果你有函数名称如Function a()
,则做一个查找&替换为a
很可能会导致各种问题。
我想你要解析的所有工作表的所有单元格用这种功能,小心使用值替换:
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
我不知道你可以在公式中替换。这是一个耻辱Excel没有一个“重命名函数名称”功能,将一次执行所有重命名。但是你的解决方案适用于我。 – 2014-12-09 14:05:14