выделить диапазон ячеек

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

Подскажите пожалуйста, как макросом, можно выделить диапазон ячеек. к примеру: E1:H1, I1:L1.
но вместо букв, были мои переменные. Как выделять диапазон, не буквами, а числами (Моими переменными)

вот что то типа этого

Код: Выделить всё

Range(Sheets("лист1").Cells(1, x) & ":" & Sheets("лист1").Cells(1, x + 2)).Select

Заранее спасибо
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

Например, так:

Код: Выделить всё

[color=darkblue]Sub[/color] test()
    x = 3
    Range(Sheets("лист1").Cells(1, x).Address & ":" & Sheets("лист1").Cells(1, x + 2).Address).Select
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
А лучше так:

Код: Выделить всё

[color=darkblue]Sub[/color] test2()
    x = 3
    Sheets("лист1").Cells(1, x).Resize(, 3).Select
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
Или даже так:

Код: Выделить всё

[color=darkblue]Sub[/color] test3()
    x = 3
    Cells(x).Resize(, 3).Select
[color=darkblue]End[/color] [color=darkblue]Sub[/color]

И вообще, пора отвыкать использовать метод Select
В Вашем случае он абсолютно не нужен, и лишь замедляет Ваши макросы.
Да и объём кода сократится в десять раз...
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

ОГО !! спасибо огромное !! ну я не так давно начал писать макросы. и опыта явно недостаточно. Если бы знал как избежать метода селект, обязательно им воспользовался бы =)
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте kuznetsovSergey.
"...Если бы знал как избежать метода селект..."
Select - выделяет ячейку (диапазон ячеек), т.е. происходит в большинстве случаев "необязательная навигация" по листу, и только потом выполняется требуемое действие (в примере присвоение значения)

Код: Выделить всё

    Range("A1").[B]Select[/B]
    ActiveCell = Variable
следующий код тоже присваивает значение Variable ячейке A1, при этом ячейка A1 может быть неактивной

Код: Выделить всё

    Range("A1") = Variable
Евгений.
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

обязательно попробую !! спасибо !
Ответить