2016-03-28 2 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 = Таблицы (« Календарь »)' должен быть 'Set ws = Таблицы (« Календарь ») и' 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