тут несколько раньше надо начать:
On Error Resume Next' необходимая строка, так как не все имена ссылаются на диапазон
For Each x In Application.Names ' перечисление всех имен
If Intersect(x.RefersToRange, cell) Is Nothing Then ' проверка на пересечение заданного диапазона с диапазоном, на кот ссылается имя : x.RefersToRange
Else ' если возникает ошибка(имя не ссылается на диапазон), то эта строка обеспечивает правильную работу макроса(ну и сравнение короче - не надо not) ( not Intersect(x.RefersToRange, cell) Is Nothing не будет работать)
arnm = arnm & x.Name & " " 'перечисление через пробел
End If
Next
arnm = Trim(arnm) ' удаление ненужного пробела в конце