ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   public variables losing state after sheet deletion (https://www.excelbanter.com/excel-programming/388238-public-variables-losing-state-after-sheet-deletion.html)

J Streger

public variables losing state after sheet deletion
 
I have a workbook where I declare some public variables such as:

Public wsControl as Worksheet

and then I have an initialization method that runs on Workbook_Open that
sets wsControl = Sheets("Control")

This works all fine and the reference sticks...until a sheet is deleted.
Then all my sheet references like the one above get set to Nothing. Is there
a way to avoid this or a way to determine when the state has changed in order
to re-initialize the public variables (without having to check everytime I
call a method)?


--
*********************
J Streger
MS Office Master 2000 ed.
MS Project White Belt 2003


RB Smissaert

public variables losing state after sheet deletion
 
Doesn't happen here.

In ThisWorkbook module:

Option Explicit

Private Sub Workbook_Open()
Set shSheet = Sheets("Sheet1")
End Sub

In normal module:

Option Explicit
Public shSheet As Worksheet

Sub test()

MsgBox shSheet.Name

End Sub

Delete Sheet2 and Sub test() still gives right result.

I think something else is causing your problem.


RBS


"J Streger" wrote in message
...
I have a workbook where I declare some public variables such as:

Public wsControl as Worksheet

and then I have an initialization method that runs on Workbook_Open that
sets wsControl = Sheets("Control")

This works all fine and the reference sticks...until a sheet is deleted.
Then all my sheet references like the one above get set to Nothing. Is
there
a way to avoid this or a way to determine when the state has changed in
order
to re-initialize the public variables (without having to check everytime I
call a method)?


--
*********************
J Streger
MS Office Master 2000 ed.
MS Project White Belt 2003



J Streger

public variables losing state after sheet deletion
 
I tried this two different ways. It seems that if a user deletes a sheet, the
public variable is OK. If the sheet is programatically deleted, then the
public variable goes to nothing. I guess I have to reinitialize after every
sheet deleted

--
*********************
J Streger
MS Office Master 2000 ed.
MS Project White Belt 2003



"RB Smissaert" wrote:

Doesn't happen here.

In ThisWorkbook module:

Option Explicit

Private Sub Workbook_Open()
Set shSheet = Sheets("Sheet1")
End Sub

In normal module:

Option Explicit
Public shSheet As Worksheet

Sub test()

MsgBox shSheet.Name

End Sub

Delete Sheet2 and Sub test() still gives right result.

I think something else is causing your problem.


RBS


"J Streger" wrote in message
...
I have a workbook where I declare some public variables such as:

Public wsControl as Worksheet

and then I have an initialization method that runs on Workbook_Open that
sets wsControl = Sheets("Control")

This works all fine and the reference sticks...until a sheet is deleted.
Then all my sheet references like the one above get set to Nothing. Is
there
a way to avoid this or a way to determine when the state has changed in
order
to re-initialize the public variables (without having to check everytime I
call a method)?


--
*********************
J Streger
MS Office Master 2000 ed.
MS Project White Belt 2003




Dave Peterson

public variables losing state after sheet deletion
 
I did this in xl2003:

Behind the ThisWorkbook module:
Option Explicit
Private Sub Workbook_Open()
Set wks = Worksheets("sheet1")
End Sub

In a General module:
Option Explicit
Public wks As Worksheet
Sub aa()
Debug.Print "Befo " & wks.Name
Application.DisplayAlerts = False
Worksheets("sheet2").Delete
Application.DisplayAlerts = True
Debug.Print "after: " & wks.Name
End Sub

From the immediate window:
Befo Sheet1
after: Sheet1

If you killed any running code (hit the Reset button or used Run|Reset within
the VBE), or used a line like "End" (not "end sub" or "end if" or...), then the
public variable will lose its contents.



J Streger wrote:

I tried this two different ways. It seems that if a user deletes a sheet, the
public variable is OK. If the sheet is programatically deleted, then the
public variable goes to nothing. I guess I have to reinitialize after every
sheet deleted

--
*********************
J Streger
MS Office Master 2000 ed.
MS Project White Belt 2003

"RB Smissaert" wrote:

Doesn't happen here.

In ThisWorkbook module:

Option Explicit

Private Sub Workbook_Open()
Set shSheet = Sheets("Sheet1")
End Sub

In normal module:

Option Explicit
Public shSheet As Worksheet

Sub test()

MsgBox shSheet.Name

End Sub

Delete Sheet2 and Sub test() still gives right result.

I think something else is causing your problem.


RBS


"J Streger" wrote in message
...
I have a workbook where I declare some public variables such as:

Public wsControl as Worksheet

and then I have an initialization method that runs on Workbook_Open that
sets wsControl = Sheets("Control")

This works all fine and the reference sticks...until a sheet is deleted.
Then all my sheet references like the one above get set to Nothing. Is
there
a way to avoid this or a way to determine when the state has changed in
order
to re-initialize the public variables (without having to check everytime I
call a method)?


--
*********************
J Streger
MS Office Master 2000 ed.
MS Project White Belt 2003




--

Dave Peterson


All times are GMT +1. The time now is 06:44 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com