在使用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