Добавить в избранное   Сделать стартовой   Главная   E-mail   Форум   Мой блог 
   
Cертификации

Errors

ETL

FAQ (по темам)

GIS

Web

wiki

Администрирование

Безопасность

Книги
Oracle, ...

Новости

ОС

Программирование

Проектирование БД

Производительность

Скачать

Советы

Тестирование

Установка

FAQ - по базам данных
FAQ - по базам данных
Установка СУБД
Oracle
Sybase
MySQL
PostgreSQL
MS SQL Server
Interbase, Firebird
Другие DB
Администрирование
Oracle
MySQL
Sybase
PostgreSQL
MS SQL Server
Interbase, Firebird
IBM DB2
Другие DB
Проектирование БД
Статьи
ETL
Теория БД
ErWin
Designer 2000
PowerDesigner
Хранилища данных
CASE средства
OLAP
Бизнес - анализ (BI)
Производительность
Oracle
MSSQL
Interbase, Firebird
IBM DB2
MySQL
PostgreSQL
SYBASE
Безопасность БД
Oracle
MS SQL Server
Инъекция SQL
Программирование
Transact-SQL
PL/SQL
C++
XML
SQL
PostgreSQL
MDX
Java
VBA Excel
Книги по базам
Oracle
Заказ книг
ОС
Установка и настройка
UBUNTU
ОС
Установка и настройка
UBUNTU
FAQ
FAQ - по базам данных
Главная arrow VBA Excel arrow Выбор ячеек и диапазонов ячеек в Excel с помощью процедур Visual Basic

Выбор ячеек и диапазонов ячеек в Excel с помощью процедур Visual Basic

Печать E-mail
Корпорация Майкрософт приводит примеры программного кода только для иллюстрации и не предоставляет явных или подразумеваемых гарантий относительно их пригодности для применения в пользовательских приложениях. Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний соответствующего языка программирования и необходимых средств разработки и отладки. Специалисты служб технической поддержки Майкрософт могут пояснить назначение определенной процедуры, но модификация примеров для обеспечения дополнительных возможностей или разработка процедур для конкретных задач заказчика не предусмотрена. В приведенных в этой статье примерах используются методы Visual Basic, перечисленные в таблице ниже.
   Метод              Аргументы
------------------------------------------
Activate нет
Cells rowIndex, columnIndex
Application.Goto reference, scroll
Offset rowOffset, columnOffset
Range cell1
cell1, cell2
Resize rowSize, columnSize
Select нет
Sheets index (или sheetName)
Workbooks index (или bookName)
End direction
CurrentRegion нет
В приведенных в этой статье примерах используются свойства, указанные в таблице ниже.
   Свойство       Описание
---------------------------------------------------------------------
ActiveSheet определяет активный лист
ActiveWorkbook определяет активную книгу
Columns.Count подсчет числа столбцов в указанном элементе
Rows.Count подсчет числа строк в указанном элементе
Selection ссылка на выбранный диапазон
Перейти к началу страницы

1. Выбор ячейки на активном листе

loadTOCNode(2, 'moreinformation'); Для выбора ячейки D5 на активном листе можно использовать любой из приведенных ниже способов.
ActiveSheet.Cells(5, 4).Select
-или-
ActiveSheet.Range("D5").Select
Перейти к началу страницы

2. Выбор ячейки на другом листе той же книги

loadTOCNode(2, 'moreinformation'); Для выбора ячейки E6 на другом листе той же книги можно использовать любой из приведенных ниже способов.
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   -или-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Кроме того, можно активировать лист и использовать для выбора ячейки способ, описанный в пункте 1.
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Перейти к началу страницы

3. Выбор ячейки на листе другой книги

loadTOCNode(2, 'moreinformation'); Для выбора ячейки F7 на листе другой книги можно использовать любой из приведенных ниже способов.
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-или-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Кроме того, можно активировать лист и использовать для выбора ячейки способ, описанный в пункте 1.
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
Перейти к началу страницы

4. Выбор диапазона ячеек на активном листе

loadTOCNode(2, 'moreinformation'); Для выбора диапазона ячеек C2:D10 на активном листе можно использовать любой из приведенных ниже способов.
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select
Перейти к началу страницы

5. Выбор диапазона ячеек на другом листе той же книги

loadTOCNode(2, 'moreinformation'); Для выбора диапазона ячеек D3:E11 на другом листе той же книги можно использовать любой из приведенных ниже способов.
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Кроме того, можно активировать лист и использовать для выбора диапазона ячеек способ, описанный в пункте 4.
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Перейти к началу страницы

6. Выбор диапазона ячеек на листе другой книги

loadTOCNode(2, 'moreinformation'); Для выбора диапазона ячеек E4:F12 на листе другой книги можно использовать любой из приведенных ниже способов.
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Кроме того, можно активировать лист и использовать для выбора диапазона ячеек способ, описанный в пункте 4.
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
Перейти к началу страницы

7. Выбор именованного диапазона на активном листе

loadTOCNode(2, 'moreinformation'); Для выбора именованного диапазона «Test» на активном листе можно использовать любой из приведенных ниже способов.
Range("Test").Select
Application.Goto "Test"
Перейти к началу страницы

8. Выбор именованного диапазона на другом листе той же книги

loadTOCNode(2, 'moreinformation'); Для выбора именованного диапазона «Test» на другом листе той же книги можно использовать приведенный ниже способ.
Application.Goto Sheets("Sheet1").Range("Test")
Кроме того, можно активировать лист и использовать для выбора именованного диапазона способ, описанный в пункте 7.
Sheets("Sheet1").Activate
Range("Test").Select
Перейти к началу страницы

9. Выбор именованного диапазона на листе другой книги

loadTOCNode(2, 'moreinformation'); Для выбора именованного диапазона «Test» на листе другой книги можно использовать приведенный ниже способ.
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Кроме того, можно активировать лист и использовать для выбора именованного диапазона способ, описанный в пункте 7.
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
Перейти к началу страницы

10. Выбор ячейки относительно активной ячейки

loadTOCNode(2, 'moreinformation'); Для выбора ячейки, расположенной на пять строк ниже и четыре столбца левее активной ячейки, можно использовать приведенный ниже способ.
ActiveCell.Offset(5, -4).Select
Для выбора ячейки, расположенной на две строки выше и три столбца правее активной ячейки можно использовать приведенный ниже способ.
ActiveCell.Offset(-2, 3).Select
Примечание. При попытке выбрать ячейку за пределами листа произойдет ошибка. Например, при выполнении первого фрагмента ошибка произойдет, если активная ячейка находится в столбцах A-D, так как после перемещения на четыре столбца влево адрес ячейки стал бы неверным.

Перейти к началу страницы

11. Выбор ячейки относительно другой (неактивной) ячейки

loadTOCNode(2, 'moreinformation'); Для выбора ячейки, расположенной на пять строк ниже и четыре столбца правее ячейки C7, можно использовать приведенные ниже способы.
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Перейти к началу страницы

12. Выбор диапазона ячеек относительно указанного диапазона

loadTOCNode(2, 'moreinformation'); Для выбора диапазона ячеек, имеющего тот же размер, что и именованный диапазон «Test», но смещенного на четыре строки вниз и три столбца вправо, можно использовать приведенный ниже способ.
ActiveSheet.Range("Test").Offset(4, 3).Select
Если именованный диапазон расположен на другом (неактивном) листе, сначала активируйте этот лист, а затем выберите диапазон, используя приведенный ниже способ.
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Перейти к началу страницы

13. Выбор указанного диапазона с изменением его размеров

loadTOCNode(2, 'moreinformation'); Для выбора именованного диапазона «Database» и его увеличения на пять строк можно использовать приведенный ниже способ.
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Перейти к началу страницы

14. Выбор указанного диапазона, его смещение и изменение его размеров

loadTOCNode(2, 'moreinformation'); Чтобы выбрать диапазон, расположенный на четыре строки ниже и три столбца правее именованного диапазона «Database», и включить в него на две строки и один столбец больше, чем в именованном диапазоне, можно использовать приведенный ниже способ.
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select
Перейти к началу страницы

15. Выбор объединения двух или более указанных диапазонов

loadTOCNode(2, 'moreinformation'); Для выбора объединения (совмещенной области) двух именованных диапазонов «Test» и «Sample» можно использовать приведенный ниже способ.
Application.Union(Range("Test"), Range("Sample")).Select
Чтобы этот способ сработал, оба диапазона должны относиться к одному листу. Метод Union не поддерживает работу с разными листами. Например, следующая строка дает нужный результат:
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
но при попытке выполнить код
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
будет выведено следующее сообщение об ошибке:
Union method of application class failed
Перейти к началу страницы

16. Выбор пересечения двух или более указанных диапазонов

loadTOCNode(2, 'moreinformation'); Для выбора пересечения двух именованных диапазонов «Test» и «Sample» можно использовать приведенный ниже способ.
Application.Intersect(Range("Test"), Range("Sample")).Select
Чтобы этот способ сработал, оба диапазона должны относиться к одному листу.



В примерах 17-21 используется следующий образец данных с указанием в каждом примере диапазона выбираемых в примере данных ячеек:
   A1: Имя    B1: Продажи    C1: Количество
A2: a B2: $10 C2: 5
A3: b B3: C3: 10
A4: c B4: $10 C4: 5
A5: B5: C5:
A6: Total B6: $20 C6: 20
Перейти к началу страницы

17. Выбор последней ячейки столбца непрерывных данных

loadTOCNode(2, 'moreinformation'); Для выбора последней ячейки в непрерывном столбце можно использовать приведенный ниже способ.
ActiveSheet.Range("a1").End(xlDown).Select
Если выполнить этот код для приведенной выше таблицы-примера, будет выбрана ячейка A4.

Перейти к началу страницы

18. Выбор пустой ячейки, расположенной ниже непрерывного столбца

loadTOCNode(2, 'moreinformation'); Для выбора ячейки, расположенной ниже непрерывного диапазона, можно использовать приведенный ниже способ.
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Если выполнить этот код для приведенной выше таблицы-примера, будет выбрана ячейка A5.

Перейти к началу страницы

19. Выбор полного непрерывного диапазона ячеек в столбце

loadTOCNode(2, 'moreinformation'); Для выбора непрерывного диапазона ячеек в столбце можно использовать приведенные ниже способы.
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   -или-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Если выполнить этот код для приведенной выше таблицы-примера, будут выбраны ячейки с A1 по A4.

Перейти к началу страницы

20. Выбор полного прерывающегося диапазона ячеек в столбце

loadTOCNode(2, 'moreinformation'); Для выбора прерывающегося диапазона ячеек в столбце можно использовать приведенные ниже способы.
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select
   -или-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _
End(xlUp).Address).Select
Если запустить этот код для приведенной выше таблицы-примера, будут выбраны ячейки с A1 по A6.

Перейти к началу страницы

21. Выбор прямоугольного диапазона ячеек

loadTOCNode(2, 'moreinformation'); Для выбора прямоугольного диапазона ячеек вокруг определенной ячейки следует использовать метод CurrentRegion. При помощи метода CurrentRegion выбирается диапазон, ограниченный пустыми строками и столбцами в любом сочетании. Применение метода CurrentRegion поясняется приведенным ниже примером.
ActiveSheet.Range("a1").CurrentRegion.Select
Выполнение этого кода приводит к выбору ячеек с A1 по C4. Ниже приведены другие способы выбора того же диапазона ячеек.
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   -или-
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
В некоторых случаях может понадобиться выбрать ячейки A1-C6. В данном примере метод CurrentRegion не сработает из-за пустой строки 5. Приведенные ниже примеры позволяют выбрать все ячейки.
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    -или-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select
Перейти к началу страницы

22. Выбор нескольких прерывающихся столбцов разной длины

loadTOCNode(2, 'moreinformation'); Примеры таблицы и макроса, иллюстрирующие выбор нескольких прерывающихся столбцов разной длины, приведены ниже.
   A1: 1  B1: 1  C1: 1  D1: 1
A2: 2 B2: 2 C2: 2 D2: 2
A3: 3 B3: 3 C3: 3 D3: 3
A4: B4: 4 C4: 4 D4: 4
A5: B5: 5 C5: 5 D5:
A6: B6: C6: 6 D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
Если выполнить этот код для таблицы-примера, будут выбраны ячейки с A1 по A3 и с C1 по C6.
Перейти к началу страницы

ПРИМЕЧАНИЯ К ПРИМЕРАМ

loadTOCNode(2, 'moreinformation');
  • Свойство ActiveSheet обычно можно опускать, поскольку оно используется по умолчанию, если не указан определенный лист. Например, вместо кода
    ActiveSheet.Range("D5").Select
    можно написать
    Range("D5").Select
  • Свойство ActiveWorkbook также может быть опущено в большинстве случаев. Если не указана конкретная книга, по умолчанию используется активная книга.
  • Если при использовании метода Application.Goto нужно вызвать два метода Cells в методе Range, когда указанный диапазон относится к другому (неактивному) рабочему листу, необходимо каждый раз использовать объект Sheets, например:
    Application.Goto Sheets("Sheet1").Range( _
    Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
    Sheets("Sheet1").Cells(4, 5)))
  • Вместо любого элемента в кавычках (например, именованного диапазона «Test») можно использовать переменную со строковым значением. Например, вместо кода
    ActiveWorkbook.Sheets("Sheet1").Activate
    можно написать
    ActiveWorkbook.Sheets(myVar).Activate
    где переменная myVar имеет значение «Sheet1».
 
 
« Пред.
     

Последние добавленные статьи
Поиск
Ссылки
Главная
Скачать
Курсы
Роль АБД (SYSDBA)
Карта сайта
Автостекла
Контакты
Войти на сайт
Популярные статьи
Online - тесты
1Z0-042
Rambler's Top100 МЕТА - Украина. Рейтинг сайтов хостинг от freehost.com.ua

Все права защищены.SYSDBA 2010 | Если у Вас есть хороший материал пришлите его нам.