Страницы: 1
RSS
Как средствами VBA проверить, присвоено ли данной ячейке какое-либо имя?
 
Ну, собственно, надеюсь, вопрос из темы понятен.
 
Способ один: только перебором всех имен в цикле,
и проверкой, входит ли заданная ячейка в каждый именованный диапазон.

Пример такого макроса:
http://support.microsoft.com/kb/213413
 
Код
Sub TestNames()

Dim Nm As Name
Dim str As String

If InStr(1, ActiveSheet.Name, " ") > 0 Then
    str = "='" & ActiveSheet.Name & "'!" & ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlR1C1)
Else
    str = "=" & ActiveSheet.Name & "!" & ActiveWindow.RangeSelection.Address(ReferenceStyle:=xlR1C1)
End If
    
For Each Nm In ActiveWorkbook.Names
    If Nm.RefersToR1C1 = str Then MsgBox "ДА! " & Nm.Name
Next
    
End Sub


Код проверяет является ли выделеный диапазон (ячейка) именованым.
 
Ясно, спасибо.
Как во многих случаях, опять консервы экскаватором открывать :(
 
Цитата
LVL пишет:
If InStr(1, ActiveSheet.Name, " ") > 0 Then
не только.
для такого имени листа, как "100" (без кавычек), Excel тоже добавляет одинарные кавычки к ссылке.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
"Входит" - это одно, а проверить, имеет ли диапазон имя, можно и без перебора:
Код
Sub bb()
Dim n As Name
On Error Resume Next
Set n = Selection.Name
If Err Then
    MsgBox "Выделенному диапазону не присвоено имя", vbExclamation
    Err.Clear
Else
    MsgBox "Имя: " & n.Name
End If
End Sub
 
Попробуйте использовать такое:
Private Sub Worksheet_Activate()
Dim f As Name
Dim Count As Integer
For Each f In ActiveWorkbook.Names
'MsgBox f
   If Not f.Visible = False Or Not f.Visible = True Then
   Count = Count + 1
   Cells(20 + Count, 3).Value = f
'    f.Delete
   End If
Next f
MsgBox "скрытые имена в количестве " & vbCr & vbTab & Count & " шт" & vbCr & vbTab & " удалены"
End Sub
 
Цитата
Казанский пишет:
"Входит" - это одно, а проверить, имеет ли диапазон имя, можно и без перебора:
Да-да, вот такая простая штука пока нужна, сенкс)
 
Цитата
не только.
для такого имени листа, как "100" (без кавычек), Excel тоже добавляет одинарные кавычки к ссылке.

буду знать, до этого не спотыкался  :)
 
Код
function rName$(r as range)
  on error resume next
  rName=r.name.name
end function


в случае, если нет имени, вернет пустую строку.

ps о... Алексей уже написал, оказывается :) ну, а у меня функция!  :D
Изменено: ikki - 18.03.2013 13:11:03
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Страницы: 1
Читают тему
Наверх