Методы CircleInvalid и ClearCircle для конкретной ячейки в Excel vba 2007 - PullRequest
0 голосов
/ 17 ноября 2011

Я использую проверку данных в Excel 2007. Я использую этот код, чтобы сделать недействительные данные отмеченными красным кружком.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rc As Integer

Range(Target.Address).Select

ActiveSheet.ClearCircles
ActiveSheet.CircleInvalid

If Not Range(Target.Address).Validation.Value Then
  rc = MsgBox("Data Validation errors exist! " & Range
  (Target.Address).Validation.ErrorMessage & " Please correct circled entries!", vbCritical, "Failure")
  Exit Sub
End If
End Sub

Как вы можете видеть в коде, когда я ставлю неправильные данные, то сначалаэтот определенный диапазон будет выбран, и тогда все недействительные данные будут отмечены красным кружком.
Но я хочу, чтобы только эта конкретная ячейка была отмечена красным, а не все данные.

Спасибо.

1 Ответ

1 голос
/ 17 ноября 2011

Вы можете попробовать этот код из Excel MVP:

Dim TheCircledCell As Range

Sub CircleCells(CellToCircle As Range)
    If Not CellToCircle Is Nothing Then
        With CellToCircle
            If .Count > 1 Then Exit Sub
            Set TheCircledCell = CellToCircle
            .Validation.Delete
            .Validation.Add xlValidateTextLength, xlValidAlertInformation, xlEqual, 2147483647#
            .Validation.IgnoreBlank = False
            .Parent.CircleInvalid
        End With
    End If
End Sub

Sub ClearCircles()
If Not TheCircledCell Is Nothing Then
    With TheCircledCell
        .Validation.Delete
        .Parent.ClearCircles
    End With
End If
End Sub

Обратите внимание, что вы не можете использовать стандартную функцию проверки Excel для этих ячеек.

[ Источник иобъяснение кода ]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...