我正在尝试编写一个程序来执行以下步骤:
- 在单元格 M2 时,检查列之前所有单元格的内容 M 在同一行
- 如果同一行中 M 列之前的任何单元格为空,则执行 不允许用户在单元格 M2 中输入任何值。而是给了一个消息 向用户告知空数据。
- 在单元格 N2 中创建缺失数据的报告(第一行 Excel 的列中包含数据标题)
目前遇到的问题: 无限循环 - 我认为当清除内容时再次触发循环会导致此问题
我不确定连接代码是否好。
程序如下:
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
感谢您提前回复...
最佳答案
另一个不使用宏的选项是使用 M 列中的数据验证和自定义公式
=counta(A2:L2)=12
以及自定义错误消息“A 至 L 列中的空白单元格”。
这当然不会给你丢失的单元格,但你可以用这个数组公式得到第一个单元格(用ctrl+Shift+enter输入)
=IFERROR(ADDRESS(ROW(),MATCH(TRUE,A2:L2="",0)),"")
关于excel - 验证内容-不允许用户输入-给出无效数据报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281760/