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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值