我正在尝试编写一个程序来执行以下步骤:
到目前为止遇到的问题: 无限循环 - 我认为当再次触发清除内容循环时会导致此问题
我不确定连接代码是否良好。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$M$2" Then
MsgBox "1"
Call MyMacro
End If
End Sub
Sub MyMacro()
'If [OR(ISBLANK(A2:L2))] Then
If ISBLANK(A2) Then
MsgBox "2"
Range("N2").Select
ActiveCell.Value = N2.Value + A1.Value
'Range("M2").ClearContents
'MsgBox "3"
'this the message that pops up if any cell in the range is blank
End If
End Sub
感谢您提前回复......
答案 0 :(得分:1)
这样的事情
A2:L2
更改M2
时空白(真空)的测试Events
,以避免在使用N2
时重新加载代码N12
是否有空白<强>码强>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
If Intersect(Target, Range("M2")) Is Nothing Then Exit Sub
With Application
.EnableEvents = False
On Error Resume Next
Set rng1 = Range("A2:L2").Cells.SpecialCells(xlBlanks)
On Error GoTo 0
If Not rng1 Is Nothing Then
MsgBox "blank cells in " & rng1.Address(0, 0), vbCritical, "User entry in M2 removed"
[n2] = rng1.Address
[m2].Clear
End If
.EnableEvents = True
End With
End Sub
答案 1 :(得分:1)
另一个不使用宏的选项是在M列中使用数据验证,使用自定义公式
=counta(A2:L2)=12
和自定义错误消息“列A到L中的空白单元格”。
这当然不会给你丢失的单元格,但是你可以使用这个数组公式得到第一个(用ctrl + Shift + enter进入)
=IFERROR(ADDRESS(ROW(),MATCH(TRUE,A2:L2="",0)),"")