2016-10-05 5 views
0

Как создать макрос, чтобы найти и заменить часть именованного диапазона.Изменение именованного диапазона

Допустим, у меня есть CKWH_1, CKWH_2

Есть ли способ заменить KWH с THR поэтому он стал CTHR_1, CTHR_2

Спасибо.

+1

Возможный дубликат http://stackoverflow.com/questions/21443737/vba-excel-2010-renaming-named-ranges – nbayly

ответ

0
Sub Renames() 
    Const csOld As String = "KWH" 
    Const csNew As String = "THR" 

    Dim strN As Name 

    For Each strN In ActiveWorkbook.Names 
     If InStr(1, strN.Name, csOld) <> 0 Then 
      strN.Name = Replace(strN.Name, csOld, csNew) 
     End If 
    Next strN 
End Sub 

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

+0

Это, я считаю, оставит все старые именованные диапазоны еще активными. Новые именованные диапазоны будут существовать, но будут дублироваться от старого. Вам нужно добавить в свой цикл, чтобы обойти, а затем удалить старые именованные диапазоны после их переименования. Также я бы предположил, что мы требуем от OP больше усилий, прежде чем мы будем решать их вопросы. – nbayly

+0

Поскольку мы каждый раз меняем имя, оно не дублирует именованные диапазоны. Он просто переименовывает их. – Werrf

+0

Я проверил его с помощью Excel 2016, и я подтвердил, что он не просто переименовывает их. Он создает новый именованный диапазон и сохраняет старый именованный диапазон. Об этом также говорится в сообщении, которое я связал с моим комментарием по оригинальной публикации. Я сделал это, создав именованный диапазон, а затем написал суб, который переименовывает его. После запуска я вижу в «Менеджере имен», что есть два именованных диапазона, ссылающихся на один и тот же адрес. Вы также подтверждаете это, создавая именованный диапазон, затем выбираете тот же диапазон и помещая другую строку в поле «Имя». Затем вы получите 2 именованных диапазона, а не 1. – nbayly

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