2016-11-04 3 views
2

Я пытаюсь добавить Name в свою книгу. Ссылка имеет формулу INDEX. Я получаю сообщение об ошибке на этой строке кода:Ошибка VBA с добавлением имени с формулой в ссылке

ActiveWorkbook.Names.Add Name:=RangeName, RefersTo:=Reference 

Я попробовал его с ActiveWorkbook, а также попытался определения рабочего листа.

Я думаю, это не сработает, потому что диапазон имен не может быть сопоставлен с листом, потому что в нем есть функция, но я не знаю, как это решить. У кого-нибудь есть предложение?

Sub NameRange_Add3() 
Dim RangeName As String 
Dim Reference As String 
Dim i As Integer 


For i = 2 To 6 
    RangeName = "list" & i 
    Reference = "=INDEX(tabla_1;;MATCH(" & "hszis" & i & ";hszi_list;0))" 
    ActiveWorkbook.Names.Add Name:=RangeName, RefersTo:=Reference 
Next i 

End Sub 

ответ

3

При использовании создания формул в VBA необходимо использовать английское обозначение, что означает точки как десятичные разделители и запятые в качестве аргументов функции сепараторов.

Вы можете делать то, что делали @brettdj и использовать запятые

Reference = "=INDEX(tabla_1,,MATCH(" & "hszis" & 1 & ",hszi_list,0))" 

или использовать RefersToLocal вместо RefersTo

ActiveWorkbook.Names.Add Name:=RangeName, RefersToLocal:=Reference 

Я предпочел бы первое решение, хотя, потому что в противном случае он может потерпеть неудачу, если вы выполняете макрос на машине с разными языковыми настройками.

+0

Спасибо, это сработало :) –

2

Я побежал с

Reference = "=INDEX(tabla_1,MATCH(" & "hszis" & i & ",hszi_list,0))"

, и она работала. Предлагает Вам попробовать удалить бонусную ;

Reference = "=INDEX(tabla_1;MATCH(" & "hszis" & i & ";hszi_list;0))"

+1

Вы имеете в виду бонус ';'? –

+0

Я получаю ошибку в этой строке –

+0

ActiveWorkbook.Names.Add Имя: = RangeName, RefersTo: = Ссылка –

Смежные вопросы