как удалить все имена на листе в Excel

Программирование на Visual Basic for Applications
Alex_L
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 21.12.2012 (Пт) 13:33

как удалить все имена на листе в Excel

Сообщение Alex_L » 21.12.2012 (Пт) 13:48

Добрый день.
Пытаюсь применить команду
Activeworkbook.Names(i).delete ,
но при подстановке i в скобки программой считывается не имя, а диапазон его ячеек, и удаление имени невозможно.
Пытался задать текстом:
chr(34) & Activeworkbook.Names(i).Name & chr(34) ,
тоже не получается. Как правильно написать команду удаления имени без указания точного его названия? Имеется множество рабочих книг и в каждой - несколько имен на листе...

Sam777e
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 157
Зарегистрирован: 16.09.2010 (Чт) 4:33

Re: как удалить все имена на листе в Excel

Сообщение Sam777e » 21.12.2012 (Пт) 17:23

Код: Выделить всё
Sub InsertNames()
  Range("A1").Select
  ActiveCell.FormulaR1C1 = "Cell for Name #1"   ' A1
  ActiveWorkbook.Names.Add Name:="Name_1", RefersToR1C1:="=Sheet1!R1C1"
 
  Range("C2").Select
  ActiveCell.FormulaR1C1 = "Cell for Name #2"   ' C2
  ActiveWorkbook.Names.Add Name:="Name_2", RefersToR1C1:="=Sheet1!R2C3"
End Sub


Sub DeleteAllNames()           ' <<<-----------------------
  Dim j As Long
 
  With ActiveWorkbook
    For j = ActiveWorkbook.Names.Count To 1 Step -1
      .Names(j).Delete
    Next j
  End With
End Sub
Здоровья и удачи

Alex_L
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 21.12.2012 (Пт) 13:33

Re: как удалить все имена на листе в Excel

Сообщение Alex_L » 10.01.2013 (Чт) 15:21

Спасибо. Работает

Alex_L
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 21.12.2012 (Пт) 13:33

Re: как удалить все имена на листе в Excel

Сообщение Alex_L » 11.01.2013 (Пт) 9:11

запустил вашу процедру как подпроцедуру своей, и выскочила ошибка: runtime error 1004
проверил название имени, которую макрос пытается удалить, имя следующее:
Код: Выделить всё
?ActiveWorkbook.Names(j).Name
Excel_BuiltIn__FilterDatabase_1_1_1_1_1_1 1

почему вышла ошибка, есть идеи?
Спасибо

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.01.2013 (Пт) 10:57

Alex_L писал(а):почему вышла ошибка, есть идеи?

Потому что оно системное?
Как и область печати, кстати. Она удаляется?

Alex_L
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 21.12.2012 (Пт) 13:33

Re: как удалить все имена на листе в Excel

Сообщение Alex_L » 11.01.2013 (Пт) 14:47

эти имена могу удалить вручную,
либо макросом, но не в цикле, а указав точно индекс имени, например
Код: Выделить всё
Activeworkbook.Names(1).Delete

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.01.2013 (Пт) 23:16

Не потому ли, что размер коллекции меняется по мере удаления?

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: как удалить все имена на листе в Excel

Сообщение Template » 12.01.2013 (Сб) 14:38

Alex_L, есть подозрение, что здесь можно узнать о причине возникновении ошибки.

Alex_L
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 21.12.2012 (Пт) 13:33

Re: как удалить все имена на листе в Excel

Сообщение Alex_L » 14.01.2013 (Пн) 15:58

Спасибо. да, это моя тема. только там решение не найдено. (

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: как удалить все имена на листе в Excel

Сообщение Template » 14.01.2013 (Пн) 20:40

Т.е. решение Alec пересохранить книгу в старом формате "Книга Microsoft Excel 5.0/95" не канает ?

Alex_L
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 21.12.2012 (Пт) 13:33

Re: как удалить все имена на листе в Excel

Сообщение Alex_L » 15.01.2013 (Вт) 8:05

Дело не в этом, у Samsonova ведь в итоге не все имена удалились...поэтому даже я не пробовал это решение. Наверное, Вы правы, стоит попробовать.
А у меня тоже странность: имена удаляются вручную или даже макросом, но в одной книге, а вот если макрос запускать в нескольких книгах, то ошибка опять вылезает... Причем, если я в застопорившейся книге запускаю макрос на удаление отдельно от других книг, то он срабатывает!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 21

    TopList  
cron