Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / August 2007

Tip: Looking for answers? Try searching our database.

VB Code stops working

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Michelle K - 27 Apr 2005 14:50 GMT
I have a survey form where users can rate corporate performance.  It is made
up of radio buttons to rank efficiency.  i designed it to prevent closing and
printing if the answers are too skewed (we need 3 5's, 2 4'2 , etc)  It works
fine the first time you open the file.  However, if you change your answers
(say, rated it 4 and then want to change the rating to 3), the code stops
working.  

Why is this?  How can I solve this issue?

Thanks so much,
Michelle K
K Dales - 27 Apr 2005 15:10 GMT
Can you post your code?  Hard to know without seeing it.

> I have a survey form where users can rate corporate performance.  It is made
> up of radio buttons to rank efficiency.  i designed it to prevent closing and
[quoted text clipped - 7 lines]
> Thanks so much,
> Michelle K
Michelle K - 27 Apr 2005 15:22 GMT
Here is the code:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If (Range("C27") <> 3 And Range("D27") <> 2 And Range("E27") <> 1 And
Range("F27") <> 2 And Range("G27") <> 3 _
And Range("I27") <> 3 And Range("J27") <> 2 And Range("K27") <> 1 And
Range("L27") <> 2 And Range("M27") <> 3 _
And Range("C42") <> 2 And Range("D42") <> 2 And Range("E42") <> 1 And
Range("F42") <> 2 And Range("G42") <> 2 _
And Range("I42") <> 2 And Range("J42") <> 2 And Range("K42") <> 1 And
Range("L42") <> 2 And Range("M42") <> 2 _
And Range("C57") <> 2 And Range("D57") <> 2 And Range("E57") <> 1 And
Range("F57") <> 2 And Range("G57") <> 2 _
And Range("I57") <> 2 And Range("J57") <> 2 And Range("K57") <> 1 And
Range("L57") <> 2 And Range("M57") <> 2) Then
MsgBox "You must complete the survey before closing." _
  & " Please note the number of selections required per action.",
vbExclamation, "CANNOT CLOSE"
Cancel = True
End If

End Sub

it's a simple code that just prevents the user from closing Excel without
answering the survey accordingly. It runs once and after that it doesn't
anymore.

> Can you post your code?  Hard to know without seeing it.
>
[quoted text clipped - 9 lines]
> > Thanks so much,
> > Michelle K
Tom Ogilvy - 27 Apr 2005 16:07 GMT
Do you have other event related code where you disable events

Application.EnableEvents = False

It sounds like events are getting disabled and never reenabled.

Signature

Regards,
Tom Ogilvy

> Here is the code:
>
[quoted text clipped - 37 lines]
> > > Thanks so much,
> > > Michelle K
Michelle K - 27 Apr 2005 16:18 GMT
I tried adding these lines but they don't seem to be working:

Public Sub ResetEvents()

Application.EnableEvents = True

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.EnableEvents = True

End Sub

I am sure I am missing something or have written these under the wrong
events.  Help!

> Do you have other event related code where you disable events
>
[quoted text clipped - 48 lines]
> > > > Thanks so much,
> > > > Michelle K
Tom Ogilvy - 27 Apr 2005 16:46 GMT
If events are disabled, your second procedure will never get triggered.

Are you sure it doesn't run.  Perhaps the condition doesn't warrant a
message box?

Try putting in a msgbox at the top (temporarily

Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "In workbook Close"

If (Range("C27") <> 3 And Range("D27") <> 2 And Range("E27") <> 1 And
Range("F27") <> 2 And Range("G27") <> 3 _
And Range("I27") <> 3 And Range("J27") <> 2 And Range("K27") <> 1 And
Range("L27") <> 2 And Range("M27") <> 3 _
And Range("C42") <> 2 And Range("D42") <> 2 And Range("E42") <> 1 And
Range("F42") <> 2 And Range("G42") <> 2 _
And Range("I42") <> 2 And Range("J42") <> 2 And Range("K42") <> 1 And
Range("L42") <> 2 And Range("M42") <> 2 _
And Range("C57") <> 2 And Range("D57") <> 2 And Range("E57") <> 1 And
Range("F57") <> 2 And Range("G57") <> 2 _
And Range("I57") <> 2 And Range("J57") <> 2 And Range("K57") <> 1 And
Range("L57") <> 2 And Range("M57") <> 2) Then
MsgBox "You must complete the survey before closing." _
  & " Please note the number of selections required per action.",
vbExclamation, "CANNOT CLOSE"
Cancel = True
End If

End Sub

You will need to save the workbook to retain the code modification.
Signature

Regards,
Tom Ogilvy

> I tried adding these lines but they don't seem to be working:
>
[quoted text clipped - 65 lines]
> > > > > Thanks so much,
> > > > > Michelle K
Michelle K - 27 Apr 2005 21:03 GMT
I added a message box into the top of the code and it worked - meaning, it is
reading the code.  How come then that it isn't evaluating the condition
anymore?

> If events are disabled, your second procedure will never get triggered.
>
[quoted text clipped - 102 lines]
> > > > > > Thanks so much,
> > > > > > Michelle K
Tom Ogilvy - 28 Apr 2005 13:30 GMT
There are so many conditions in your code that is has to meet to do
anything, it would not be surprising that all the conditions are not met.
(You may actually have a logic error and you are not checking what you think
you are checking).  There must be an easier check you can perform, but I
have no knowledge of what you are doing, so I can't suggest anything
specific.  I would think the worksheet functions countif or sumif might be
able to play a roll here.

Signature

Regards,
Tom Ogilvy

> I added a message box into the top of the code and it worked - meaning, it is
> reading the code.  How come then that it isn't evaluating the condition
[quoted text clipped - 106 lines]
> > > > > > > Thanks so much,
> > > > > > > Michelle K
Michelle K - 28 Apr 2005 13:50 GMT
Thanks Tom.

It's a survey that lets you rate performance from 1-5 and importance from
1-5 as well.  At the end of each section,  we want users to have 3 items with
a rating of 5, 2 items with a rating of 4 and so on.  I am not the idea
behind the requirements.  I am just writing the code for a committee here at
work.  So what i did was to add radio buttons and then tallied how many were
5's, etc at the bottom of each section (Rows 27, 42 and 57).  

Let me check my logic and see how it goes.  If you think of anything else,
please let me know.  It's one of the big boss' pet projects. :(

> There are so many conditions in your code that is has to meet to do
> anything, it would not be surprising that all the conditions are not met.
[quoted text clipped - 123 lines]
> > > > > > > > Thanks so much,
> > > > > > > > Michelle K
Tom Ogilvy - 28 Apr 2005 21:00 GMT
I think your logic is wrong.  You should be using OR instead of AND.  AND
would require that the user had the wrong number in every one of the cells
that you check.  OR would stop closing if any cell that you checked did not
meet the criteria.

Signature

Regards,
Tom Ogilvy

> Thanks Tom.
>
[quoted text clipped - 135 lines]
> > > > > > > > > Thanks so much,
> > > > > > > > > Michelle K
Michelle K - 28 Apr 2005 21:12 GMT
PERFECT!

Thanks so much!

> I think your logic is wrong.  You should be using OR instead of AND.  AND
> would require that the user had the wrong number in every one of the cells
[quoted text clipped - 171 lines]
> > > > > > > > > > Thanks so much,
> > > > > > > > > > Michelle K
p.hall - 27 Apr 2005 16:09 GMT
I do not have Excel on this machine, so I can't test this theory, but
is it because "Cancel=True".  When the code runs a second time, is
Cancel still set to true?
Bob Phillips - 27 Apr 2005 16:52 GMT
No that is an event argument to stop the close event happening.

Signature

HTH

Bob Phillips

> I do not have Excel on this machine, so I can't test this theory, but
> is it because "Cancel=True".  When the code runs a second time, is
> Cancel still set to true?
Bob Phillips - 27 Apr 2005 16:12 GMT
You have put it in Thisworkbook code module?

Signature

HTH

RP
(remove nothere from the email address if mailing direct)

> Here is the code:
>
[quoted text clipped - 37 lines]
> > > Thanks so much,
> > > Michelle K
Bob Phillips - 27 Apr 2005 15:11 GMT
Show the code and indicate where it goes wrong might be a start.

Signature

HTH

Bob Phillips

> I have a survey form where users can rate corporate performance.  It is made
> up of radio buttons to rank efficiency.  i designed it to prevent closing and
[quoted text clipped - 7 lines]
> Thanks so much,
> Michelle K
joed - 17 Aug 2007 02:22 GMT
I'm using Excel 2003 on an XP box. If I write a vba event handler procedure
that has any error in it, for example mismatch, out of range, whatever, ... I
stop the run, make appropriate changes but, I have to completely shutdown
excel, start it back up in order to get the procedure to run again. If I do
not do this the event handler is not called when I click on a cell, (which
fires the event).

...any suggestions, is this a setting I can change somewhere?
Signature

j.f.dolan

Dave Peterson - 17 Aug 2007 03:20 GMT
It sounds like your code turns off events somewhere and it's not getting turned
back on.

Inside the VBE
hit ctrl-g (to see the immediate window)
type this and hit enter:
application.enableevents = true

> I'm using Excel 2003 on an XP box. If I write a vba event handler procedure
> that has any error in it, for example mismatch, out of range, whatever, ... I
[quoted text clipped - 6 lines]
> --
> j.f.dolan

Signature

Dave Peterson

joed - 17 Aug 2007 17:58 GMT
That was exactly the problem and your solution has given me an even greater
understanding of events and their use, (and traps)

Thank you very much

---joe
Signature

j.f.dolan

> It sounds like your code turns off events somewhere and it's not getting turned
> back on.
[quoted text clipped - 14 lines]
> > --
> > j.f.dolan
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.