簡體   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