在我的(非常複雜的)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