Создание квадратных ячеек (тетрадных клеток) на рабочем листе Excel с помощью кода VBA, когда высота строк в диапазоне листа равна ширине столбцов.
Квадратные ячейки в Excel
В этой статье мы рассмотрим создание квадратных ячеек с помощью кода VBA на рабочем листе Excel по аналогии с тетрадным листом в клетку:
Кнопка «Размер ячейки» предназначена для выбора ширины и высоты тетрадных клеток (стороны квадрата) в пикселях.
Создание тетрадных клеток
Чтобы создать квадратные клетки в Excel по аналогии с тетрадным листом, необходимо задать ячейкам рабочего листа равные высоту и ширину.
Но проблема заключается в том, что высота строк и ширина столбцов задаются разными единицами измерения, и выражение ActiveCell.ColumnWidth = ActiveCell.RowHeight
не сделает активную ячейку квадратной.
Для организации программного создания тетрадных клеток мы вручную создадим несколько равносторонних ячеек, ориентируясь на пиксели, и запишем их размеры в пунктах (высота) и символах (ширина):
Получилась следующая таблица:
Сторона квадрата в пикселях | Высота ячейки в пунктах | Ширина ячейки в символах |
---|---|---|
10 | 7.5 | 0.83 |
15 | 11.25 | 1.43 |
20 | 15 | 2.14 |
25 | 18.75 | 2.86 |
30 | 22.5 | 3.57 |
Форма и элементы управления
Для выбора размера квадратных ячеек в пикселях создадим пользовательскую форму UserForm1, на которой разместим поле со списком ComboBox1 и кнопку CommandButton1.
Размеры и надписи формы и элементов управления зададим в процедуре инициализации пользовательской формы, размещенной в ее модуле:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
'Настройка формы перед ее отображением Private Sub UserForm_Initialize() With UserForm1 .Height = 112.5 .Width = 207.75 .Caption = "Размер ячеек" With .ComboBox1 .Height = 22 .Width = 162 .Top = 12 .Left = 18 .Font.Size = 12 .Value = "Выберите размер ячеек" .AddItem "10" .AddItem "15" .AddItem "20" .AddItem "25" .AddItem "30" End With With .CommandButton1 .Height = 24 .Width = 72 .Top = 48 .Left = 60 .Font.Size = 12 .Caption = "OK" End With End With End Sub |
В этой же процедуре заполняется раскрывающийся список ComboBox1 значениями для выбора.
Для вызова пользовательской формы на рабочем листе размещаем кнопку из коллекции «Элементы ActiveX», меняем ее название на «Размер ячейки» и добавляем код отображения формы в модуль листа:
1 2 3 |
Private Sub CommandButton1_Click() UserForm1.Show End Sub |
Присвоение ячейкам размеров
Для присвоения одинаковой высоты и ширины ячейкам рабочего листа в модуль пользовательской формы вставляем процедуру, привязанную к событию Click кнопки CommandButton1 (кнопка на форме):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Private Sub CommandButton1_Click() With ActiveSheet.Cells Select Case ComboBox1.Value Case 10 .RowHeight = 7.5 .ColumnWidth = 0.83 Case 15 .RowHeight = 11.25 .ColumnWidth = 1.43 Case 20 .RowHeight = 15 .ColumnWidth = 2.14 Case 25 .RowHeight = 18.75 .ColumnWidth = 2.86 Case 30 .RowHeight = 22.5 .ColumnWidth = 3.75 Case Else MsgBox "Размер ячеек не выбран!" Exit Sub End Select End With Unload Me End Sub |
Данная процедура VBA использует размер клетки в пикселях, выбранный из выпадающего списка, для задания соответствующих размеров в пунктах и символах для высоты и ширины ячеек на рабочем листе Excel.