天天看點

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

繼續閱讀