Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как работает Range в Excel

1.8K
02 июня 2008 года
Serg_M
49 / / 09.08.2004
у меня несколько страниц в книге и мне надо выделить диапазон ячеек, допустим B2:E2 для каких-то действий. делаю Range("B2:E2").Select, он мне пишет что я или за пределы диапазона вышел или неправильно использую select. перед range писал и к кокой книги.рабочимуЛисту отностится, короче ничего не помогает.
код проги:

' Sheets(nnPage).Range("B2:E2").Select
' With Selection
' .HorizontalAlignment = xlCenter
' .VerticalAlignment = xlBottom
' .WrapText = False
' .Orientation = 0
' .AddIndent = False
' .IndentLevel = 0
' .ShrinkToFit = False
' .ReadingOrder = xlContext
' .MergeCells = False
' End With
' Selection.Merge

Ошибка: "метод Select из класса Range завершен неверно"
P.S. Можь че не так делаю??? Весьма признателен всем кто поможет. Заранее спасибо.
275
02 июня 2008 года
pashulka
985 / / 19.09.2004
Выделение (Select) и активация (Activate) в большинстве случаев (и данный не является исключением) есть операция совершенно ненужная. К примеру, для того, чтобы изменить параметры форматирования диапазона ячеек неактивного рабочего листа, можно просто указать родителей (хотя справедливости ради следует заменить, что попытка изменить параметры форматирования в защищённом рабочем листе неизменно приведёт к ошибке, причём ошибка возникнет даже в том случае, если ячейки, параметры форматирования которых необходимо изменить, будут не защищены. впрочем, подобное безобразие продолжалось только до появления MS Excel XP)

Код:
Application.DisplayAlerts = False
'Имеет смысл использовать, если Вы не хотите, чтобы
'при об'единении ячеек на экране могло появиться сообщение,
'информирующее о том, что :

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

With ThisWorkbook.Worksheets(1).Range("B2:E2")
     .HorizontalAlignment = xlCenter
     .VerticalAlignment = xlBottom
     .WrapText = False
     .Orientation = 0
     .AddIndent = False
     .IndentLevel = 0
     .ShrinkToFit = False
     .ReadingOrder = xlContext
     .MergeCells = True '.Merge
End With
 
Application.DisplayAlerts = True


Что касается об'екта Range и его методов Select/Activate, то здесь всё просто … для того, чтобы выделить некий диапазон необходимо сначала активировать нужную рабочую книгу (если книга уже является активной, этот шаг можно пропустить), затем активировать нужный рабочий лист (если лист уже является активным, то этот шаг также можно пропустить) и только затем выделять диапазон. Однако повторюсь, выделение диапазона не есть необходимость, но если очень хочется, то и в этом случае можно обойтись без вышеупомянутых методов, ибо :

 
Код:
Application.Goto Reference:= _
Workbooks("Книга1.xls").Worksheets("Лист1").Range("B2:E2") ', Scroll:=True
Вместо имени книги и листа можно использовать их индекс(номер)

'Application.Goto Application.Range("[Книга1.xls]Лист1!B2:E2") ', True

'и т.д. и т.п.


Естественно, что в момент выполнения этой инструкции рабочая книга с именем "Книга1.xls" обязательно должна быть открыта и в ней должен наличествовать рабочий лист с именем "Лист1"
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог