【发布时间】:2017-04-10 18:21:45
【问题描述】:
我正在尝试创建一个宏来验证是否填写了非连续范围,然后在包含值的最后一行之后删除空行。
在上图中,A、D、G、H、I 列是必填字段。如果一个包含一个值,则其余必填字段也必须包含一个值。绿色突出显示的单元格是可以通过验证的输入示例,而黄色将需要失败,因为 A 和 G 中的值未填写。
我尝试了以下方法:
Sub Validate()
Dim Cell As Range
For Each Cell In Union(Range("A2:A3"), Range("D2:D3"), Range("G2:G3"), Range("H2:H3"), Range("I2:I3"))
If IsEmpty(Cell) Then
MsgBox ("Error: All mandatory fields must be filled out") 'actions To Do If True
End If
Next
End Sub
问题在于,每次用户输入信息时,行数都会有所不同,一旦完成,其余行就会留空。我不太确定如何进行,因为我对 VBA 和一般编码都很陌生。我希望某种检查这些必填字段并在遇到空行时停止的循环可以解决问题,但是我对编码真的不太了解。
我发现 VBA 可以删除空行,如下所示,并希望在验证完成后运行它。
不确定其中是否有任何意义,如果您需要澄清,请告诉我。非常感谢任何和所有帮助!
【问题讨论】:
-
那么,如果任何行在 A、D、G、H 或 I 列中的任何一个中有一个条目,那么总有一个条目吗?其他列有数据吗?
-
正确,如果 A、D、G、H 或 I 列中的任何一个中有条目,那么所有条目中都必须有一个条目。 B、C、E、F、J 或 K 列中也可能有值,但不是强制性的。 K 将是可以包含值的最后一列。