2010-02-17 96 views
1

我需要爲調用特定用戶定義函數的單元格設置唯一的名稱。 所以我嘗試如下如何使用VBA設置Excel單元格的名稱

Dim r As Range 
set r = Application.Caller 

r.Name = "Unique" 

函數內設置一個名稱但這是行不通的。請幫助

謝謝

回答

5

下面的代碼將單元格A1有名稱爲 'MyUniqueName':

Private Sub NameCell() 

Dim rng As Range 
Set rng = Range("A1") 
rng.Name = "MyUniqueName" 

End Sub 

這是否幫助?

編輯

我不知道如何實現你一個簡單的方法所需要的,優雅的方式。我確實管理這個黑客 - 看看這是否有幫助,但你最有可能想擴大我的解決方案。

假設我有VBA以下用戶定義的函數,我在工作表中引用:

Public Function MyCustomCalc(Input1 As Integer, Input2 As Integer, Input3 As Integer) As Integer 

MyCustomCalc = (Input1 + Input2) - Input3 

End Function 

我每次調用這個函數我想調用該函數將被分配一個名稱的單元格。要做到這一點,如果你去「的ThisWorkbook」在您的VBA項目,然後選擇「SheetChange」事件,那麼你可以添加以下內容:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
If Left$(Target.Formula, 13) = "=MyCustomCalc" Then 
    Target.Name = "MyUniqueName" 
End If 
End Sub 

總之,要看到這個代碼檢查是否調用範圍是使用用戶定義的函數,然後在此實例中爲該範圍指定一個名稱(MyUniqueName)。

正如我所說,上述不是很好,但它可能會給你一個開始。我找不到將代碼嵌入用戶定義函數的方法,並直接設置範圍名稱,例如使用Application.Caller.AddressApplication.Caller.Cells(1,1)等。我確定有一種方法,但我恐怕我是VBA陰影生鏽...

+2

還有另一種(雖然不太友好)的方式來添加命名範圍:ActiveWorkbook.Names。添加名稱:=「myName」,RefersToR1C1:= MyArea。請參閱http://www.mrexcel.com/td0131.html – PPC 2012-06-28 17:45:43

相關問題