Номер статті: 291308 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

На цій сторінці

Додаткові відомості

Корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації без будь-яких гарантій: явних або таких, що припускаються. Це стосується, без обмежень, будь-яких гарантій придатності до продажу або для конкретного використання. Приклади в цій статті розраховані на користувачів, які мають достатній рівень знань відповідної мови програмування та необхідних засобів і процедур розробки та налагодження. Співробітники служби підтримки корпорації Майкрософт можуть пояснити можливості конкретної процедури. Проте вони не будуть змінювати приклади для реалізації додаткових можливостей або створювати процедури на вимогу окремих користувачів. У наведених у цій статті прикладах використовуються методи Visual Basic, перелічені в наступній таблиці.
   Method             Arguments
   ------------------------------------------
   Activate           none
   Cells              rowIndex, columnIndex
   Application.Goto   reference, scroll
   Offset             rowOffset, columnOffset
   Range              cell1
                      cell1, cell2
   Resize             rowSize, columnSize
   Select             none
   Sheets             index (or sheetName)
   Workbooks          index (or bookName)
   End                direction
   CurrentRegion      none
				
У прикладах цієї статті використовуються властивості, перелічені в таблиці нижче.
   Property         Use
   ---------------------------------------------------------------------
   ActiveSheet      to specify the active sheet
   ActiveWorkbook   to specify the active workbook
   Columns.Count    to count the number of columns in the specified item
   Rows.Count       to count the number of rows in the specified item
   Selection        to refer to the currently selected range
				

1. Вибір клітинки в поточному аркуші

Вибрати клітинку D5 у поточному аркуші можна так:
ActiveSheet.Cells(5, 4).Select
				
- або -
ActiveSheet.Range("D5").Select
				

2. Вибір клітинки в іншому аркуші тієї ж книги

Вибрати клітинку E6 в іншому аркуші тієї ж книги можна так:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
				
   -or-
				
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 method of application class failed (Помилка методу Union класу Application)

16. Вибір перетинання кількох зазначених діапазонів

Вибрати перетинання двох іменованих діапазонів Test і Sample можна так:
Application.Intersect(Range("Test"), Range("Sample")).Select
				
Щоб цей спосіб працював, обидва діапазони мають бути розташовані в одному аркуші.



У прикладах 17–21 використовується такий зразок даних: У кожному прикладі зазначено діапазон клітинок, що виділяються.
   A1: Name    B1: Sales    C1: Quantity
   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
				
   -or-
				
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select
				
Якщо виконати цей код для наведеної вище зразкової таблиці, буде виділено клітинки A1–A4.

20. Вибір повного переривчастого діапазону клітинок у стовпці

Вибрати не безперервний діапазон клітинок можна так:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select
				
   -or-
				
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
				
   -or-
				
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
				
    -or-
				
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 зазначений діапазон відноситься до іншого (не вибраного) аркуша, у методі Range необхідно викликати два методи Cells, щоразу використовуючи об’єкт 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".

Посилання


Щоб отримати додаткову інформацію про використання прикладів коду, наданих у цій статті, клацніть номер статті в базі знань Microsoft:
290140 Виконання прикладів коду для програм Office XP, наданих у статтях бази знань
Примітка. Це екстрена стаття, яку написала служба підтримки Microsoft. Інформація в цій статті призначена для вирішення нових проблем і надається "як є". З огляду на швидкість її підготовки та публікації, ця стаття може містити орфографічні помилки і її може бути змінено будь-коли без попереднього повідомлення. Додаткову інформацію див. в повідомленні про авторське право.

Властивості

Номер статті: 291308 - Востаннє переглянуто: 15 липня 2014 р. - Редакція: 1.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