Страницы: 1
RSS
Квадратные скобки вместо "Range" в коде
 
Доброго всем дня!
Решил упростить код, и вообще освоить более простые методы его написания. Например:
Код
.[C1] = "Сумма"
вместо
Код
.Range("C1") = "Сумма"
В связи с этим возник вопрос как с помощью этого же принципа переделать вот это:
Код
.Range("E2:E" & lr) 'тут переменная обозначает нижний край выделения
и это:
Код
.Range("J2", .Range("K2").End(xlDown))
Можно ли, используя квадратные скобки, полностью избавиться от всех этих "Range"?
 
IvanMantrov, квадратные скобки это неявный вызов метода Evaluate, т.е. в квадратных скобках должно быть выражение, которое можно интерпретировать как формулу листа, включая адреса ячеек, функции листа, имена, определенные в книге или на листе. А переменных VBA там быть не может, потому что это другое пространство имен. Значит, чтобы передать информацию в "квадратные скобки" из VBA, надо поместить ее в ячейку или в имя:
Код
Sub bb()
Dim lr
  lr = 5
  Names.Add "lrName", lr
  [OFFSET(E2,,,lrName)].Select
End Sub
То есть сделать это можно, но код усложнится,  и будет зависеть от стиля ссылок приложения: если пользователь вдруг переключит стиль ссылок на R1C1, ни .[C1], ни формула выше работать не будет.
Изменено: Казанский - 21.05.2018 09:20:38
 
IvanMantrov,  Если мой слабо макрушный опыт не подводит , то нет.

Evaluate, собственно что показал выше Казанский, не для этого.
Изменено: БМВ - 21.05.2018 11:29:17
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх