首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

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

2012-06-22 
EXCEL中用VBA实现有选择的控制必输在使用EXCEL作数据模板的时候,经常会碰到有些字段要求必须输入,但EXCEL

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



热点排行