繁体   English   中英

检查单元格的范围,如果满足条件,则会出现消息框,并且撤消操作

[英]Check a range of cells and if criteria is met message box appears and undos action

我正在尝试验证M31:M41中的单元格范围,如果单元格是灰色的并且用户错误输入了信息,则会出现一个消息框,然后撤消上一个操作。 到目前为止,这是我的代码

Set rng = ThisWorkbook.Sheets("Edit Entry").Range("M31:M41")

For each cell in rng 
    If cell.interior.Colorindex = 15 then 
        If Not Intersect(Target, Range("M31:M41")) Is Nothing then 
            Msgbox "NOT AN EDITABLE FIELD.", vbCritical + vbOkOnly, "NO DATA ENTRY"

            With Application 
                .EnableEvents = False 
                .Undo 
                .EnableEvents = True 
            End With 
        End If 
    End If 
Next Cell

问题是,它可以按我希望的方式工作,但是却给我错误

运行时错误'1004':对象'_Application'的方法'Undo'失败。

关于如何实现此目标而没有任何编码问题的任何想法?

对于单个单元格,这似乎对我有用。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myRange As Range
Set myRange = Range("M31:M41")

If Not Intersect(Target, myRange) Is Nothing Then
    If Target.Interior.Color = 15 Then
        Application.EnableEvents = False
            MsgBox "Cannot Change This Cell"
            Application.Undo
        Application.EnableEvents = True
    End If
End If

End Sub

对于多方面的变化...

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myRange As Range, xCell As Range
Set myRange = Range("M31:M41")

For Each xCell In Target
    If Not Intersect(xCell, myRange) Is Nothing Then
        If xCell.Interior.Color = 15 Then
            Application.EnableEvents = False
                MsgBox "Cannot Change This Cell"
                Application.Undo
            Application.EnableEvents = True
            Exit Sub
        End If
    End If
Next xCell

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM