Работа с трехмерными диапазонами Excel из кода VBA. Выделение трехмерного диапазона, задание границ, заливка, присвоение значений.
Трехмерный диапазон в Excel
Трехмерным диапазоном в Excel называется совокупность одинаковых двумерных диапазонов ячеек, выбранных одновременно на двух и более рабочих листах.
Получение трехмерного диапазона в книге Excel вручную:
- выбираем одновременно два или более рабочих листов, используя клавиши Ctrl и/или Shift;
- на любом из одновременно выделенных листов выбираем нужный диапазон, выбор автоматически будет продублирован на остальных выделенных листах.
Работа с трехмерными диапазонами
Работа с трехмерными диапазонами Excel из кода VBA осуществляется таким же образом, как и вручную:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Range_3d() 'Выбираем группу листов Sheets(Array("Лист1", "Лист2", "Лист3", "Лист4", "Лист5")).Select 'Выбираем диапазон Range("F5:H7").Select Selection.Borders.LineStyle = True Selection.Interior.Color = vbGreen 'Выбираем диапазон Range("F5").Select Selection = 25 'Выбираем диапазон Range("F6").Select Selection = 50 'Выбираем диапазон Range("F7").Select Selection = 75 End Sub |
При выборе диапазона, когда выделена группа листов, диапазон выбирается одновременно на всех выделенных листах. К выбранному трехмерному диапазону можно обращаться, как к объекту Selection.
Если сначала не выбрать диапазон из кода VBA Excel, а использовать выражение:
1 |
Range("F5") = 25 |
тогда значение 25 будет присвоено ячейке "F5" только на активном листе. Когда выделена группа листов, активным в этой группе может быть все-равно только один лист.
Несмотря на то, что в трех случаях выбирается диапазон из одной ячейки на каждом листе, он все равно является трехмерным.
Решение через двумерные диапазоны
Решение той же задачи с помощью цикла и двумерных диапазонов:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub Range_2d() Dim a, b a = Array("Лист1", "Лист2", "Лист3", "Лист4", "Лист5") For Each b In a With Sheets(b) .Range("F5:H7").Borders.LineStyle = True .Range("F5:H7").Interior.Color = vbGreen .Range("F5") = 25 .Range("F6") = 50 .Range("F7") = 75 End With Next End Sub |