2016-03-28 155 views
0

我有一個小問題/複雜問題,但我不明白爲什麼我會得到這個錯誤。VBA動態名稱範圍

在VBA代碼,我有這樣的:

ws = Sheets("Calendar") 
c = "Fixed" 
first = ce.Address 
end = ce2.Address  
wb.Names.Add Name:=c, RefersTo:=ws.Name & "!" & first & ":" & end 

公式創建一個名爲範圍內像這樣的:

="Calendar!$M$2:$M$4" 

此命名範圍沒有顯示出任何價值,但如果我改變手動命名範圍如下:

=Calendar!$M$2:$M$4 

它會工作。

問題在哪裏?爲什麼公式不起作用?哪個參數錯誤?

由於

+0

您的代碼存在多個問題。 'ws = Sheets(「Calendar」)'應該是'Set ws = Sheets(「Calendar」)'和'end'不能是變量名。但主要問題是'RefersTo:='的字符串必須以等號開頭。請參閱https://msdn.microsoft.com/en-us/library/office/ff834743.aspx。 –

回答

1
  1. 到底是不是一個很好的變量名
  2. WS是一個對象,所以設置應當用於分配它
  3. 公式需要一個「=」在它前面

Set ws = Sheets("Calendar") c = "Fixed" first = ce.Address end1 = ce2.Address wb.Names.Add Name:=c, RefersTo:="=" & ws.Name & "!" & first & ":" & end1

+0

我已經翻譯過「第一個」和「結束」而沒有考慮它。在原始代碼中,名稱不同。缺少「=」是問題。謝謝! – Gabriele