Making cells mandatory to fill in

A

abfabrob

I am creating an application form where I want users to fill certain cells in
before closing the document.

Does anyone have an idiots guide to doing this, cos I'm not great with excell.

ANY help welcome!!!
 
J

JulieD

Hi

following on from your discussion with Jason Morin (please stay in the
original thread) - what is the code you're getting the errors on, what is
the sheet name and cells that you want to make mandatory?

Cheers
JulieD
 
A

abfabrob

I was given this code:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolea­n, _


Cancel As Boolean)


Dim cell As Range


For Each cell In Range("Required_Cells")


If IsEmpty(cell.Value) Then


MsgBox "You must fill in cell " & cell.Addre­ss


Application.Goto cell


Cancel = True


Exit For


End If


Next cell


End Sub

But I have no idea what it means. I put it in the right place (I think) and
I input the cells I want the users to fill in, butI keep getting this
message: "Compile error: user-defined type not defined".

I so have no knowledge of anything, quite clearly. I need it explained step
by step.

Cheers,

Rob
 
J

JulieD

Hi Rob

to use the code, right mouse click on a sheet tab and choose view / code -
in the VBE window you'll see down the left hand side your workbook's name in
bold & brackets ... under that will be things like sheet1,sheet2,
ThisWorkbook - the code needs to go into the "ThisWorkbook" section
- so double click on ThisWorkbook

then
on the top right side of the screen you have two drop down arrows - on the
one of the left choose Workbook
on the one on the right choose Before Save
then
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)

End Sub

will appear on your screen - the first line (starting with Private & ending
with Cancel As Boolean is all one line like in your screen)
now between these two lines you need to copy & paste the code

Dim cell As Range
For Each cell In Sheets("Sheet2").Range("A1,A2,A3,A4")
If IsEmpty(cell.Value) Then
MsgBox "You must fill in cell " & cell.Address
Application.Goto cell
Cancel = True
Exit For
End If
Next cell

---
now where it says "Sheet2" above change that to the sheet name you want to
check for entry on (leave the "") and where it says A1, A2, A3, A4 change
these to the actual cells you want to ensure have data in them.

once you've done that use ALT & F11 to switch back to your workbook and test
it.

Let us know how you go.

Cheers
JulieD
 
A

abfabrob

It doesn't say "This Workbook" anywhere... the VBE screen is completely
blank...

Rob.
 
J

JulieD

Hi Rob

from the menu in the VBE screen choose view / project explorer

Cheers
JulieD
 
J

JulieD

you're welcome ... now make sure you've set security to medium (and choose
enable macros when you open the workbook) or it won't work if you close the
book (tools / macro / security tab)

Cheers
JulieD
 
K

kyoshirou

if i want when A1 is entered, B1 must be entered also.
then when A2 has to be entered, B2 has to be entered too.
then...
if the forumla is apply to B3,B4&b5
but i only need uers to fill in A3 first, A4&A5 will be filled next time.
then it will keep promp users to enter B4&B5 which I dont want.
any helps?
thanks!
 
K

kyoshirou

any tips?

kyoshirou said:
if i want when A1 is entered, B1 must be entered also.
then when A2 has to be entered, B2 has to be entered too.
then...
if the forumla is apply to B3,B4&b5
but i only need uers to fill in A3 first, A4&A5 will be filled next time.
then it will keep promp users to enter B4&B5 which I dont want.
any helps?
thanks!
 
M

mdtuckett

Hi Julie,

I have added your code to my spreadsheet and it does force the user to
populate the required cells. However, I need the cells to be blank when other
users open the spreadsheet and for them to be forced to populate the cells
before they save a copy. Do you know how I can save the spreadsheet having
added the code, without populating the fields myself?

Thanks
 
J

JBeaucaire

Click on the Design Mode button so all code is disabled long enough fo
you to save the sheet. That drove me nuts for weeks once..
 
G

Gord Dibben

You will have to save the workbook as a Template with the beforesave code
and the required cells empty.

To do this, add the code to Thisworkbook.........I think you already did
that.

Leave the required cells empty then save the workbook with events disabled.

Application.EnableEvents = False entered into the Immediate Window will do
that for you.

Save the workbook as a FileType of Template(*.xlt)

Now close the workbook. You will not be asked to fill in the cells

Go back to the Immediate window and re-enable events by making them = True.

From now on when users open a new workbook based upon the Template, they
will have to fill in the cells before saving.


Gord Dibben MS Excel MVP
 
B

BJ

Julie, I tried the code you provided and it worked perfectly. However my
problem is slightly different. I would like users to enter an X in one of
cells E6, E7, E8, E9 or E10. Any one only. How can I change the code below to
accept an X in one cell only?

Thanks.
Ben Joseph
 
W

wkmooreh

I need help, I am working on an excel expense report templete and want them
to fill in certain cells before they exit. When I copied the thread from
below I keep getting error messages. I dont know if I am putting valoues of
the cells i want filled out in the wrong place or not. This is what it looks
like: it says for each cell in range line is not right...

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)


Dim cell As Range


For Each cell In Range(d5, g5, j5, e7, m7, g10)


If IsEmpty(cell.Value) Then


MsgBox "You must fill in cell " & cell.Address


Application.Goto cell


Cancel = True


Exit For


End If


Next cell


End Sub
 
D

Dave Peterson

You'll want to provide the worksheet name to check, too.

Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim cell As Range

For Each cell In Me.Worksheets("Sheet1").Range("d5,g5,j5,e7,m7,g10")
If IsEmpty(cell.Value) Then
MsgBox "You must fill in cell " & cell.Address
Application.Goto cell
Cancel = True
Exit For
End If
Next cell
End Sub
 
W

wkmooreh

Dave Thanks.. this is what i put. i saved it and closed it out , when back in
and it isnt forcing doing anything... I am sorry for the confusion, I did
this years ago. But none of it has come back to me at all


Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim cell As Range

For Each cell In
Expense_Report__BLANK.xls("MASTER").Range("d5,g5,j5,e7,m7,g10")
If IsEmpty(cell.Value) Then
MsgBox "You must fill in cell " & cell.Address
Application.Goto cell
Cancel = True
Exit For
End If
Next cell
End Sub
 
D

Dave Peterson

Try this:

For Each cell In me.worksheets("MASTER").Range("d5,g5,j5,e7,m7,g10")

Me refers to the object that owns the code. In this case, since the code is in
the ThisWorkbook module, the Me keyword refers to the workbook that's closing.

And in this case, it doesn't matter, but I like this syntax:

For Each cell In me.worksheets("MASTER").Range("d5,g5,j5,e7,m7,g10").cells

I think it makes it more self-documenting.
 
W

wkmooreh

Ok Dave - Now it works to perfect, I cant save and close it without it
wanting me to fill in the required cells.. What can I do

Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim cell As Range
For Each cell In Me.Worksheets("MASTER").Range("d5,g5,j5,e7,m7,g10")
If IsEmpty(cell.Value) Then
MsgBox "You must fill in cell " & cell.Address
Application.Goto cell
Cancel = True
Exit For
End If
Next cell
End Sub
 
S

Sri

Ok Dave - Now it works to perfect, I cant save and close it without it
wanting me to fill in the required cells.. What can I do

Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim cell As Range
For Each cell In Me.Worksheets("MASTER").Range("d5,g5,j5,e7,m7,g10")
If IsEmpty(cell.Value) Then
MsgBox "You must fill in cell " & cell.Address
Application.Goto cell
Cancel = True
Exit For
End If
Next cell
End Sub

--
w
















- Show quoted text -

Check the below article, hope this helps.

http://funwithexcel.blogspot.com/2009/04/validating-form-input-and-forcing-user.html
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top