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

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

ДОДАТКОВІ ВІДОМОСТІ

Корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації без будь-яких гарантій: явних або таких, що припускаються. Це стосується, без обмежень, будь-яких гарантій придатності до продажу або для конкретного використання. Приклади в цій статті розраховані на користувачів, що мають достатній рівень знань відповідної мови програмування та необхідних засобів та процедур розробки та налагодження. Співробітники служби підтримки корпорації Майкрософт можуть пояснити можливості конкретної процедури. Проте вони не будуть змінювати приклади для реалізації додаткових можливостей або створювати процедури на вимогу окремих користувачів. У наведених у цій статті прикладах використовуються методи Visual Basic, перелічені в наступній таблиці.
   Метод              Аргументи
   ------------------------------------------
   Activate           нема
   Cells              rowIndex, columnIndex
   Application.Goto   reference, scroll
   Offset             rowOffset, columnOffset
   Range              cell1
                      cell1, cell2
   Resize             rowSize, columnSize
   Select             нема
   Sheets             index (or sheetName)
   Workbooks          index (or 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 method of application class failed (Помилка методу Union класу Application)

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:
   Відповідь 6. 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:
   Відповідь 6.    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".

ПОСИЛАННЯ


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

Властивості

Номер статті: 291308 - Востаннє переглянуто: 28 листопада 2007 р. - Редакція: 6.1
ЗАСТОСОВУЄТЬСЯ ДО:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 - стандартний випуск
  • Microsoft Excel 2000 - стандартний випуск
  • Microsoft Excel 97 - стандартний випуск
Ключові слова: 
kbhowto kbmacro kbprogramming kbautomation kbdtacode 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