Страницы: 1
RSS
Как найти адрес первой строки именованного диапазона VBA
 
Добрый день.

Есть книга с большим количеством листов. На каждом есть именованный диапазон с разными координатами.
Макросом я включаю/выключаю проверку вводимых значений в этом диапазоне устанавливая формулу первой его строки.
Код
...
Range("Диапазон").FormatConditions.Add Type:=xlExpression, Formula1:="=J4<>AE4"
...
Подскажите, как мне заменить эту часть выражения, что бы не надо было изменять каждый раз адрес диапазона?
Код
Formula1:="=J4<>AE4"
Данная формула для проверки всегда первая в именованном диапазоне.

И еще. Обратил внимание на такую особенность.
При регулярном включении/выключении условного форматирования (кнопкой) довольно часто происходит
произвольная смена формулы условного форматирования (диапазоны меняют свое значение). И проверка сбивается, становится неправильной.

Почему так происходит и можно это исправить?
Excel 2003

Спасибо
Изменено: MedvedevAV - 28.07.2015 13:18:46
Если не можешь победить беспорядок, возглавь его
 
Цитата
Как найти адрес первой строки именованного диапазона VBA
Код
Dim StrokaDiapazon As String
    StrokaDiapazon = Range("Диапазон").Cells(1, 1).Address
 
Вижу что не совсем корректно сформулировал условие...
В формуле проверки указывается не адрес первой строки.
Получается, что надо знать НОМЕР первой строки этого диапазона, чтобы заменить число 4 в примере.

и как полученное вставить в код формулы: Formula1:="=J4<>AE4"
Изменено: MedvedevAV - 28.07.2015 13:51:25
Если не можешь победить беспорядок, возглавь его
 
Цитата
MedvedevAV написал: указывается не адрес...НОМЕР первой строки
Ну и замените Address на Row
Код
StrokaDiapazon = Range("Диапазон").Cells(1, 1).Row
или так
или даже так
Код
StrokaDiapazon = Range("Диапазон").Rows(1).Row
Изменено: Sanja - 28.07.2015 14:04:30
Согласие есть продукт при полном непротивлении сторон
 
установка УФ из макроса - тот редкий случай, когда необходимо активировать нужную ячейку (диапазон)
Код
Private Sub ПроверкаДа()
    Set a = Range("Диапазон")
    a.Select
    a.FormatConditions.Delete
    a.FormatConditions.Add Type:=xlExpression, Formula1:="=J4<>AE4"
    a.FormatConditions(1).Font.ColorIndex = 3
End Sub
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Вот полностью код макроса устанавливающего условное.
Код
Private Sub ПроверкаДа()
    Set a = Range("Диапазон")
    a.FormatConditions.Delete
    a.FormatConditions.Add Type:=xlExpression, Formula1:="=J4<>AE4"
    a.FormatConditions(1).Font.ColorIndex = 3
End Sub
Куда вставить? Скорее всего здесь обычную формулу надо написать правильно?!
Изменено: MedvedevAV - 28.07.2015 16:21:22
Если не можешь победить беспорядок, возглавь его
 
Я убирал из кода установки условного форматирования активацию ячейки, чтобы не надо было потом переходить на другую, для снятия выделения.
Изменено: MedvedevAV - 28.07.2015 14:09:31
Если не можешь победить беспорядок, возглавь его
 
Цитата
ikki написал:
установка УФ из макроса - тот редкий случай, когда необходимо активировать нужную ячейку (диапазон)
Это почему же? Никогда активацию ячейки для этого не делал.
 
да, я не совсем корректно выразился.
можно и не делать, конечно.
только вот корректный результат тогда никто не гарантирует.
а у автора темы была проблема:
Цитата
происходит произвольная смена формулы условного форматирования (диапазоны меняют свое значение)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
Страницы: 1
Читают тему
Наверх