Advertisement

10.10.2008 at 05:05AM PDT, ID: 23803838
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

8.8

Public variable persistence in Excel VBA

Asked by rjebb in Microsoft Excel Spreadsheet Software, Visual Basic Programming, Visual Basic v1.0.5.x

Tags: , ,

I am developing an Excel workbook that can either be run in the normal way frm Explorer, or instantiated from an external application which then posts data into it. In the latter case, I need to intercept and prevent attempts to close Excel. Under these conditions, the external app can close Excel by calling a macro DoQuit() which will exit the spreadsheet.

DoQuit is declared in a module modPublic and looks like this:

Public Sub DoQuit()
On Error GoTo Err1
  ' Unconditionally close Excel
  bRequestQuit = True
  If Not ThisWB Is Nothing Then
    ThisWB.Saved = True
  End If
  Application.Quit
Err1:
  ' display any errors
  MsgBox Err.Description
End Sub

I have also created a custom event handler in ThisWorkbook, as Application.Quit triggers a Close event:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo Err1
  If Not bStandalone Then
    If Not bRequestQuit Then
      If bDebugMode Then
        MsgBox "Trapped attempt to close Excel!"
      End If
      Cancel = True
    End If
  End If
Err1:
  ' silently handle any errors
End Sub

The variables bStandalone and bRequestQuit control what happens when Workbook_BeforeClose() runs and are declared as public in modPublic.

If I put a watch on these variables when testing DoQuit, I can see bRequestQuit is set to true. When I step to Application.Quit I can see what happens in Workbook_BeforeClose() if I put a breakpoint in there, but the watch now shows bRequestQuit is set to false, Cancel is set to true and the app does not exit as desired.

Can anybody explain how a public variable can change its value "by itself" in this way?Start Free Trial
[+][-]10.10.2008 at 05:17AM PDT, ID: 22686096

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]10.10.2008 at 05:18AM PDT, ID: 22686099

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]10.10.2008 at 05:21AM PDT, ID: 22686119

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]10.10.2008 at 05:23AM PDT, ID: 22686131

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]10.10.2008 at 05:26AM PDT, ID: 22686142

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 7-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]10.10.2008 at 05:46AM PDT, ID: 22686251

View this solution now by starting your 7-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zones: Microsoft Excel Spreadsheet Software, Visual Basic Programming, Visual Basic v1.0.5.x
Tags: Microsoft, Excel, 2003 (VBA)
Sign Up Now!
Solution Provided By: rorya
Participating Experts: 2
Solution Grade: B
 
 
[+][-]10.10.2008 at 05:55AM PDT, ID: 22686320

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 7-day free trial to view this Author Comment or ask the Experts your question.

 
 
Loading Advertisement...
20080716-EE-VQP-32 - Hierarchy / EE_QW_2_20070628