Код статьи: 291308 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Дополнительная информация

Корпорация Майкрософт приводит примеры программного кода только для иллюстрации и не предоставляет явных или подразумеваемых гарантий относительно их пригодности для применения в пользовательских приложениях. Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний соответствующего языка программирования и необходимых средств разработки и отладки. Специалисты служб технической поддержки Майкрософт могут пояснить назначение определенной процедуры, но модификация примеров для обеспечения дополнительных возможностей или разработка процедур для конкретных задач заказчика не предусмотрена. В приведенных в этой статье примерах используются методы 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. Выбор ячейки на активном листе

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

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

Для выбора ячейки 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. Выбор ячейки на листе другой книги

Для выбора ячейки 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. Выбор диапазона ячеек на активном листе

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

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

Для выбора диапазона ячеек 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. Выбор диапазона ячеек на листе другой книги

Для выбора диапазона ячеек 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. Выбор именованного диапазона на активном листе

Для выбора именованного диапазона «Test» на активном листе можно использовать любой из приведенных ниже способов.
Range("Test").Select
				
Application.Goto "Test"
				

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для выбора объединения (совмещенной области) двух именованных диапазонов «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 класса приложения

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

Для выбора пересечения двух именованных диапазонов «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. Выбор последней ячейки столбца непрерывных данных

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

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

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

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

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

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

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

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

Для выбора прямоугольного диапазона ячеек вокруг определенной ячейки следует использовать метод 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. Выбор нескольких прерывающихся столбцов разной длины

Примеры таблицы и макроса, иллюстрирующие выбор нескольких прерывающихся столбцов разной длины, приведены ниже.
   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.

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

  • Свойство 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».

Ссылки


Дополнительные сведения об использовании образцов кода, приведенных в данной статье, см. в следующей статье базы знаний Майкрософт:
290140 Выполнение примеров кода для программ Office XP, встречающихся в статьях базы знаний (данная ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 291308 - Последний отзыв: 9 марта 2014 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Excel 2003
  • Microsoft Office Excel 2007
  • Microsoft Excel 2010
Ключевые слова: 
kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com