2016-03-28 151 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