У меня есть ячейка, у которой есть несколько именованных диапазонов, связанных с ней. Как мне получить его, чтобы вернуть конкретное имя без необходимости перебирать все имена в книге?Excel VBA. Как вы получаете определенное имя, связанное с диапазоном?
Sub Test()
ActiveWorkbook.Names.Add Name:="AUserDefinedName1", RefersTo:="='Sheet1'!$A$1", Visible:=True
ActiveWorkbook.Names.Add Name:="AUserDefinedName2", RefersTo:="='Sheet1'!$A$1", Visible:=True
ActiveWorkbook.Names.Add Name:="MyName", RefersTo:="='Sheet1'!$A$1", Visible:=True
Dim n As Name
Set n = Range("A1").Name
Debug.Print n.Name
End Sub
Если вы запустили вышеуказанное, для ячейки A1 оно вернет только первое имя. Однако как мне заставить его вернуть другие имена, связанные с ячейкой A1, или конкретно вернуть «MyName»?
Я мог бы прокрутить все имена в книге и посмотреть, соответствует ли свойство «RefersTo» объекта Name адресу для ячейки A1, но я хотел бы получить более прямое решение, если это возможно, быстрее.
Этот вопрос дал частичный ответ, но нужно что, если есть несколько имен? How do you get a Range to return its Name?
Реальный вопрос: почему у вас есть 3 имени для одного и того же диапазона !? –
@ MacroMan, очевидно, поэтому OP может задать вопрос о SO duh. – findwindow
Так как вы спросили ... Одно из имен будет скрыто и хранит информацию, используемую кодом. Однако, если пользователь также добавляет имя (или два) в тот же диапазон, где код также помещает имя. – ptownbro