Making Sure Cells are Filled In before Saving

Written by Allen Wyatt (last updated January 21, 2023)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, 2021, and Excel in Microsoft 365


1

Riley has a worksheet that he needs to work with every Friday. This worksheet is based on a template, and there are, at minimum, five cells he needs to fill in, in the range C4:C8. When he starts with the worksheet, these cells are blank. Riley wonders if there is a way to prevent the worksheet from being saved and/or closed until he fills in all five of these cells.

There is a way to do this, but it involves the use of macros. Excel supports the concept of event handlers, which means that you can develop macros that run, automatically, when certain events occur. Two events for which you can create special event handlers are BeforeClose (meaning, before the workbook closes) and BeforeSave (before the workbook is saved).

As an example of how this could work, let's say that the worksheet containing the range to be checked (C4:C8) is named "MyData." You could add this code to the ThisWorkbook module:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim rng As Range
    Dim iCount As Integer
    Dim sTemp As String

    Set rng = Worksheets("MyData").Range("C4:C8")
    iCount = Application.WorksheetFunction.CountBlank(rng)
    If iCount <> 0 Then
        sTemp = rng.Address & " has blank cells. " & vbCrLf
        sTemp = sTemp & "The workbook will not be closed."
        MsgBox sTemp
        Cancel = True
    End If
End Sub

Note that the macro relies on the CountBlank worksheet function to determine if there are any blanks in the range of cells. If it detects any blank cekks (iCount is greater than 0), then the macro displays a message to the user and the Cancel variable is set to True, which actually stops the workbook from closing.

You can use a similar macro for the BeforeSave event, in this manner:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim rng As Range
    Dim iCount As Integer
    Dim sTemp As String

    Set rng = Worksheets("MyData").Range("C4:C8")
    iCount = Application.WorksheetFunction.CountBlank(rng)
    If iCount <> 0 Then
        sTemp = rng.Address & " has blank cells. " & vbCrLf
        sTemp = sTemp & "The workbook will not be saved."
        MsgBox sTemp
        Cancel = True
    End If
End Sub

If you wanted to make sure that the routine selected the cells in which input is needed (as a final step), you could add the following line to both macros, right after the line that sets the Cancel variable to True:

        rng.Select

Remember, as well, that since your workbook is based on a template, it will need to be saved as a macro-enabled template in order to work properly.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (4364) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, 2021, and Excel in Microsoft 365.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Printing Duplex for a Portion of a Document

Some printers allow you to print on both sides of a piece of paper. If you want to print a portion of your document ...

Discover More

Changing the Default Paste Mode

Don't like the way that Excel pastes when you press CTRL+V? Here are some ways that you can modify the normal paste mode ...

Discover More

Finding the Widest Cell Contents

Need to know which cells in a column are the widest? There are a few ways you can approach the task, and three of those ...

Discover More

Program Successfully in Excel! This guide will provide you with all the information you need to automate any task in Excel and save time and effort. Learn how to extend Excel's functionality with VBA to create solutions not possible with the standard features. Includes latest information for Excel 2024 and Microsoft 365. Check out Mastering Excel VBA Programming today!

More ExcelTips (ribbon)

Offering Options in a Macro

It is often helpful to get user input within a macro. Here's a quick way to present some options and get the user's response.

Discover More

Removing a Directory

Macros allow you to perform all sorts of file-related operations. One such operation allows you to delete a directory. ...

Discover More

Filling a Range of Cells with Values

When writing a macro, you may want to fill a range of cells with different values. The easiest way to do this is to use ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] (all 7 characters, in the sequence shown) in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is one more than 6?

2023-01-21 10:57:21

Tomek

To improve on this approach, you can additionally specify data validation for cells in question. That way you can prevent the user from bypassing the requirement to fill the cells by putting just spaces there, as spaces are not counted as blanks. This way you can force the cells to accept only numbers, numbers that are limited in range, dates , times, or only entries that are specified in a list. You can also specify minimum and maximum for text length.
This way you can also limit incorrect information the user can inadvertently put there.


This Site

Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.

Newest Tips
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.