Страницы: 1
RSS
Добавление ячеек в именованный диапазон
 
Есть определенный именованный диапазон. Необходимо в этот диапазон добавить следующий диапазон, в котором известны адрес первой и последней ячейки. Подскажите как это можно сделать. количество строк в диапазоне diap1 может изменяться, поэтому должна быть привязка к имени, а не к адресам ячеек.
 
Вот что записал  акрорекордер
Код
       With ActiveWorkbook.Names("diap1")
        .Name = "diap1"
        .RefersToR1C1 = "=Лист1!R1C1:R4C1,Лист1!R6C1:R9C1"
    End With
Согласие есть продукт при полном непротивлении сторон
 
Можно придумать что-то такое через Union:
Код
Sub alenchikGru()
Dim strS as String
   With ActiveWorkbook.Names("ИМЯ ДИАПАЗОНА")
        strS = Right(.RefersTo, Len(.RefersTo) - 1) 'в переменную тащим через имя диапазона его ссылки и отрубаем от них "="
        .Name = "НОВОЕ ИМЯ ДИАПАЗОНА"
        .RefersTo = Union(Range(strS), Range("A6:A9")) 'добавляем к именованному диапазону новый диапазон
   End With
End Sub
Изменено: Пытливый - 30.03.2015 11:49:55
Кому решение нужно - тот пример и рисует.
 
меня задача пройти все ячейки листа Ексель,  в поиске определенных флагов, и значения между этими флагами записать в диапазоны. Заранее не известно количество этих флагов. Цикл организую
Код
 If ((flag1r > 0) And (flag2 > 0) + flag1r < flag2) Then

      Sheets(shab).Names.Add _
        Name:="diap1", _
        RefersTo:=Range(Cells(flag1r, 4), Cells(flag2, 4))
  
        flag1r = 0
        End If
и мне надо чтобы было как то типа:
RefersTo:=Range("diap1" & Cells(flag1r, 4), Cells(flag2, 4))

Но компилятор выдает ошибку.  
Изменено: alenchikGru - 30.03.2015 13:36:29
 
А как я предложил, через Union - не хотите попробовать?
Код
.RefersTo = Union(Range(strS), Range(Cells(flag1r, 4), Cells(flag2, 4)))

А в strS предварительно через имя диапазона заносим ссылку на ячейки именованного диапазона без "="
Кому решение нужно - тот пример и рисует.
 
Попробуйте
Код
If ((flag1r > 0) And (flag2 > 0) + flag1r < flag2) Then
    With Sheets(shab).Names("diap1")
        .Name = "diap1"
        .RefersTo = Range(Cells(flag1r, 4), Cells(flag2, 4))
    End With
    flag1r = 0
End If
Изменено: Sanja - 30.03.2015 11:52:00
Согласие есть продукт при полном непротивлении сторон
 
Пытливый, получилось, спасибо!

SanjaТак он вместо старого диапазона пишет новый, а не добавляет к нему новые значения.
 
alenchikGru, читайте надпись на кнопке, которую нажимаете.
"Цитата" и "ответ" не только написанием различаются!
Страницы: 1
Наверх