Администрирование
HyperSQL, IBM DB2, IBM DB2, Interbase, Firebird, Yaffil , MSSQL, MySQL, ORACLE, PostgreSQL, SYBASE, Другие, Курсы, ... |
Безопасность
HyperSQL, MSSQL, Oracle, Phpmyadmin, Инъекция SQL, Книги, Патчи, Программы, Скрипты, СУБД, ... |
Проектирование БД
Business intelligence, Data Warehouse, Designer 2000 (Oracle), ErWin, ETL, OLAP, Sybase PowerDesigner , Другие CASE средства, Статьи, Теория БД, ... |
Производительность
DB2, HyperSQL, IBM DB2, Interbase, Firebird, Yaffil, MSSQL, MySQL, ORACLE, PostgreSQL, SQL, SYBASE, Другие, ... |
Установка
HyperSQL, IBM DB2, Interbase, Firebird, Yaffil , MSSQL, MySQL, ORACLE, PostgreSQL, SYBASE, Другие, ... |
|
|
Главная VBA Excel Выбор ячеек и диапазонов ячеек в Excel с помощью процедур Visual Basic
Выбор ячеек и диапазонов ячеек в Excel с помощью процедур Visual Basic
|
|
|
|
Корпорация Майкрософт приводит примеры программного кода только для иллюстрации и не предоставляет явных или подразумеваемых гарантий относительно их пригодности для применения в пользовательских приложениях. Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний соответствующего языка программирования и необходимых средств разработки и отладки. Специалисты служб технической поддержки Майкрософт могут пояснить назначение определенной процедуры, но модификация примеров для обеспечения дополнительных возможностей или разработка процедур для конкретных задач заказчика не предусмотрена. В приведенных в этой статье примерах используются методы 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» на активном листе можно использовать любой из приведенных ниже способов.  Перейти к началу страницы 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 можно написать - Свойство 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». |
|
Последние добавленные статьи |
|
|
|
|