Проблема: нужно иметь возможность проверить диапазон или одну ячейку, чтобы увидеть, если пусто.
Мой код для замены любого текста с галочкой выглядит следующим образом:
Private Sub Worksheet_Change(ByVal Target As Range)
' If the range (as defined in the next line) is changed to anything but a blank, replace it with a check mark.
If Not Intersect(Range(Target.Address), Range("C6:C60")) Is Nothing Then
On Error GoTo ErrorOut
Application.EnableEvents = False
If Application.WorksheetFunction.IsText(Range(Target.Address)) Then
Range(Target.Address).Value = "P"
Range(Target.Address).Font.Name = "Wingdings 2"
End If
Application.EnableEvents = True
End If
Exit Sub
ErrorOut:
Debug.Print "Error"
Application.EnableEvents = True
End Sub
Оно работает.Но если пользователь выбирает более одной ячейки и удаляет их, обработка ошибок вступает во владение.Не проблема, потому что это работает, но должен быть лучший путь.
Я успешно делал это, когда хотел проверить номера с помощью If IsNumeric(Range(Target.Address)) Then
.Это работает правильно, если несколько ячеек удаляются одновременно.Но IsText
или IsEmpty
, похоже, не ведут себя точно так же, как IsNumeric
, и удаление сразу нескольких ячеек приводит к ошибке.