Зараз ви перебуваєте в автономному режимі; очікується повторне підключення до Інтернету

Вибір клітинок і діапазонів у Excel за допомогою процедур Visual Basic

Підтримку Office 2003 припинено

8 квітня 2014 р. корпорація Майкрософт припинила підтримку Office 2003. Це позначилося на оновленнях програмного забезпечення та параметрах безпеки. Дізнайтеся, що це означає для вас і яких заходів безпеки необхідно вжити.

Додаткові відомості
Корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації без будь-яких гарантій: явних або таких, що припускаються. Це стосується, без обмежень, будь-яких гарантій придатності до продажу або для конкретного використання. Приклади в цій статті розраховані на користувачів, які мають достатній рівень знань відповідної мови програмування та необхідних засобів і процедур розробки та налагодження. Співробітники служби підтримки корпорації Майкрософт можуть пояснити можливості конкретної процедури. Проте вони не будуть змінювати приклади для реалізації додаткових можливостей або створювати процедури на вимогу окремих користувачів. У наведених у цій статті прикладах використовуються методи 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").ActivateActiveSheet.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").ActivateActiveSheet.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").ActivateActiveSheet.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").ActivateRange("Test").Select				

9. Вибір іменованого діапазону клітинок в аркуші іншої книги

Вибрати іменований діапазон Test в аркуші іншої книги можна так:
Application.Goto _   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")				
Крім того, можна вибрати аркуш і скористатися для вибору клітинки способом, описаним у пункті 7:
Workbooks("BOOK2.XLS").Sheets("Sheet2").ActivateRange("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").ActivateActiveSheet.Range("Test").Offset(4, 3).Select				

13: Вибір зазначеного діапазону зі зміною його розмірів

Вибрати іменований діапазон Database і розширити його на п’ять рядків можна так:
Range("Database").SelectSelection.Resize(Selection.Rows.Count + 5, _   Selection.Columns.Count).Select				

14: Вибір зазначеного діапазону зі зсувом і зміною його розмірів

Вибрати діапазон, розташований на чотири рядки нижче та три стовпці праворуч від іменованого діапазону Database, і розширити його на два рядки й один стовпець відносно іменованого діапазону, можна так:
Range("Database").SelectSelection.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).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select				
    -or-				
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.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, наданих у статтях бази знань
OfficeKBHowTo howto contiguous how to discontiguous non-contiguous nonadjacent non-adjacent  XL2003 XL2007 XL2010
Примітка. Це екстрена стаття, яку написала служба підтримки Microsoft. Інформація в цій статті призначена для вирішення нових проблем і надається "як є". З огляду на швидкість її підготовки та публікації, ця стаття може містити орфографічні помилки і її може бути змінено будь-коли без попереднього повідомлення. Додаткову інформацію див. в повідомленні про авторське право.
Властивості

Ідентифікатор статті: 291308 – останній перегляд: 07/15/2014 13:06:00 – виправлення: 1.0

Microsoft Office Excel 2003, Microsoft Office Excel 2007 - Українська версія, Microsoft Excel 2010

  • kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308
Зворотний зв’язок