Постановка задачи
Имеем на листе список чего-либо. Хотелось бы использовать привычные флажки-чекбоксы для отмечания выбранных элементов. Примерно так:
Решение
Во-первых, поскольку мы будем работать с VBA, нам необходимо установить средний уровень безопасности в меню Сервис - Макрос - Безопасность (Tools - Macro - Security). Иначе Microsoft Excel заблокирует выполнение наших функций, считая их макровирусами.
Теперь щелкните правой кнопкой мыши по ярлычку листа, где находится список, и выберите в контекстном меню Исходный текст. Вы должны попасть в редактор Visual Basic.
Скопируйте туда этот код:
'CODE 1 Ставим флажок, если был одиночный щелчок по ячейке
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A2:A100")) Is Nothing Then
Target.Font.Name = "Marlett"
If Target = vbNullString Then
Target = "a"
Else
Target = vbNullString
End If
End If
End Sub
'CODE 2 Снимаем флажок, если был двойной щелчок по ячейке
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:A100")) Is Nothing Then
Cancel = True 'Prevent going into Edit Mode
Target.Font.Name = "Marlett"
If Target = vbNullString Then
Target = "a"
Else
Target = vbNullString
End If
End If
End Sub
Первая половина кода проверяет, не было ли одиночного щелчка по ячейкам в диапазоне A2:A100 и если был - то ставит "галочку" - знак, который в шрифте Marlett находится на букве "а". Вторая половина этого кода снимает флажок при двойном щелчке по ячейке. При необходимости замените в этом коде "A2:A100" на Ваш диапазон.
Все! Закройте редактор Visual Basic командой меню File - Close and Return to Microsoft Excel и попробуйте как это работает.
P.S. При необходимости подсчитать количество помеченных элементов всегда можно использовать простую формулу, которая подсчитывает количество ячеек с буквой "а" в нашем диапазоне:
=СЧЁТЕСЛИ(A2:A100;"a")