[英]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.