EXCEL中用VBA实现有选择的控制必输
在使用EXCEL作数据模板的时候,经常会碰到有些字段要求必须输入,但EXCEL没有控制必输的有效机制,使用数据有效性只能在编辑状态下检查数据的有效性,效果往往不理想所以,我使用VBA在数据保存和表格关闭时检查必输字段,可以有效的控制数据模板的完整性;现分享给大家,希望对大家有所帮助!
效果如图:
在保存或关闭时,如果单位名称已输入,但是分组不有录入则提示必输消息,并取消数据保存或取消关闭;
代码如下:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'---定义数据检查范围变量
Dim sRange As Range
'---定义行状态标记数组
Dim array1() As String
ReDim array1(500)
'---检查工作表名称
If ThisWorkbook.ActiveSheet.Name = "公共资源" Then
'---循环检查范围内的数据
For Each sRange In Range("c4:d20")
'---不同列的检查
Select Case sRange.Column
Case 3 '---主键列用于设置检查标记,有主键的列进行数据完整性检查,无主键不作检查
If sRange.Value <> "" Then
array1(sRange.Row) = "1"
End If
Case 4 '---要检查的数据列
If array1(sRange.Row) = "1" Then '---检查主键存在标记
If sRange.Value = Empty Then '---判断是否有数据
MsgBox "请先在 " & sRange.Address(sRange.Row, sRange.Column) & " 单元格输入内容再保存", vbExclamation
Cancel = True '---设置取消标记,不作数据更改保存
Exit Sub
End If
End If
End Select
Next
End If
End Sub