天天看点

EXCEL中用VBA实现有选择的控制必输

在使用EXCEL作数据模板的时候,经常会碰到有些字段要求必须输入,但EXCEL没有控制必输的有效机制,使用数据有效性只能在编辑状态下检查数据的有效性,效果往往不理想所以,我使用VBA在数据保存和表格关闭时检查必输字段,可以有效的控制数据模板的完整性;现分享给大家,希望对大家有所帮助!

效果如图:

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

继续阅读