有時需要把設計好的Excel表格交給許多用戶填寫,如果表格中有一些單元格為必填項,當一些用戶未填寫這些單元格時,逐一檢查這些表格顯得有些繁瑣。通常的方法是通知用戶或通過設置條件格式、設置批注等方式進行提醒,但難免有的用戶還是忘記填寫。在這種情況下可以用通過下面的宏代碼,當用戶在關閉工作簿時進行提醒,如果指定的單元格為空則不能關閉工作簿。假如工作簿中“Sheet1”表的數據區域中C列為必填區域,步驟如下:
1.按Alt+F11打開VBA編輯器,在“工程”窗口中雙擊“ThisWorkbook”。
2.在代碼窗口中輸入下列代碼:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ActiveWorkbook.Name = ThisWorkbook.Name And ActiveSheet.Name = "Sheet1" _
And ActiveCell.Row = 1 And ActiveCell.Column = 1 Then End
If ThisWorkbook.Saved = True Then
For i = 2 To Sheet1.Cells(65536, 1).End(xlUp).Row
If Sheet1.Cells(i, 3) = "" Then
MsgBox ThisWorkbook.Name & ": " & Sheet1.Name & "表C列有未填數據!", , "提示"
Sheet1.Activate
Cells(i, 3).Select
Cancel = True
End
End If
Next
Else
MsgBox "數據未保存,請保存工作簿!"
Cancel = True
End If
End Sub
當Sheet1表數據區域中C列有未填數據時,只有在下面的情況下才能正常關閉工作簿,否則Excel會彈出一個對話框提醒用戶并跳轉到指定的單元格。
一、C列的數據區域(例如本文結尾處示例文件中的C2:C10)無未填數據。
二、選擇“Sheet1”表的A1單元格后關閉工作簿。
三、刪除VBA代碼后關閉工作簿。
當需要把表格交給其他用戶填寫時,可以在保留C列為空的情況下,通過方法二和方法三正常關閉工作簿。對于其他用戶,通常不會采用這兩種方法關閉工作簿,因而可以起到提醒用戶的作用。