Проблема: Строка If Not FRg Is Nothing Then
генерирует ошибку: Object Required
Тем не менее, я мог воспроизвести ошибку 424, только когда вместо FRg
определен variant
диапазона (см. Требуемый объект (ошибка 424) )
Когда FRg
определен как диапазон, линияFRg.Comment.Visible = False
может привести к ошибке 91, если у диапазона нет комментария.
Цель : переключение видимости комментариев ячеек, когда ячейки выбраны \ не выбраны.
Решение: Это предлагаемое решение инициируется событием рабочей книги: Workbook_SheetSelectionChange
. Помните, что целевой диапазон, используемый этим событием, может включать несколько областей, а также несколько ячеек (другой альтернативой является применение процедуры только к ActiveCell
)
Процедура: ЭтоПроцедура выполняет следующие шаги:
1. Скрывает комментарии для ранее выбранного диапазона (rPrior
), независимо от того, активен родительский лист или нет.
2. Отображает комментарии, если они есть, ячейкив выбранном диапазоне.
3. Создает статический диапазон с ячейкой с комментариями для каждого прогона, чтобы применить шаг 1 в следующем прогоне (см. Статический оператор ).
Скопируйте эту процедуру в модуль ThisWorkbook
:
Private Sub Cells_Toggle_Comments(ByVal rTrg As Range)
Static rPrior As Range
Dim blShow As Boolean
Dim rTemp As Range, rArea As Range, rCll As Range
Rem Hide comments from prior event
blShow = False
If Not (rPrior Is Nothing) Then
Set rTemp = rPrior
GoSub Rng_Comments_Toggle
Set rTemp = Nothing
Set rPrior = Nothing
End If
blShow = True
Set rTemp = rTrg
GoSub Rng_Comments_Toggle
Set rTemp = Nothing
Exit Sub
Rng_Comments_Toggle:
For Each rArea In rTemp.Areas
For Each rCll In rArea.Cells
With rCll
If Not (.Comment Is Nothing) Then
.Comment.Visible = blShow
If blShow Then
If rPrior Is Nothing Then
Set rPrior = rCll
Else
Set rPrior = Union(rPrior, rCll)
End If: End If: End If: End With: Next: Next
Return
End Sub
Процедура должна вызываться таким образом из события рабочей книги Workbook_SheetSelectionChange
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Call Cells_Toggle_Comments(Target)
End Sub