ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Delet Sheets with out Automation Error (https://www.excelbanter.com/excel-programming/422408-delet-sheets-out-automation-error.html)

rogge

Delet Sheets with out Automation Error
 
here is my awesome code:

Option Private Module
Option Compare Binary
Option Explicit
Option Base 0

Public Const strDeleteSheet = "delSht"

Private Sub deleteSheets()

Dim xlSheet As Excel.Worksheet

Application.DisplayAlerts = False

For Each xlSheet In Application.ActiveWorkbook.Worksheets
If (xlSheet.CodeName Like strDeleteSheet & "*") Then
wkbActive.Worksheets(xlSheet.Name).Delete
End If
Next xlSheet

Application.DisplayAlerts = True

Set xlSheet = Nothing

End Sub

A not trappable error occurs: xlSheet.Name = <Automation error. The code
does not stop processing. I know this is due to changing the items in
ActiveWorkbook.Worksheets.

This error resets globally declared variables to empty/false/etc...

Any suggestions to delete sheets without resetting global variables?

Thank you.
rogge

Dave Peterson

Delet Sheets with out Automation Error
 
First, instead of:
wkbActive.Worksheets(xlSheet.Name).Delete

You may want to use:
Application.ActiveWorkbook.Worksheets(xlSheet.Name ).Delete

Actually, I'd use:
xlSheet.Delete

In the code you posted, there's nothing that declares or sets wkbActive.

rogge wrote:

here is my awesome code:

Option Private Module
Option Compare Binary
Option Explicit
Option Base 0

Public Const strDeleteSheet = "delSht"

Private Sub deleteSheets()

Dim xlSheet As Excel.Worksheet

Application.DisplayAlerts = False

For Each xlSheet In Application.ActiveWorkbook.Worksheets
If (xlSheet.CodeName Like strDeleteSheet & "*") Then
wkbActive.Worksheets(xlSheet.Name).Delete
End If
Next xlSheet

Application.DisplayAlerts = True

Set xlSheet = Nothing

End Sub

A not trappable error occurs: xlSheet.Name = <Automation error. The code
does not stop processing. I know this is due to changing the items in
ActiveWorkbook.Worksheets.

This error resets globally declared variables to empty/false/etc...

Any suggestions to delete sheets without resetting global variables?

Thank you.
rogge


--

Dave Peterson

rogge

Delet Sheets with out Automation Error
 

wkbActive is declared elsewhere...
I do like xlSheet.Delete...

but i had one of our excel experts look at the code, etc.. the public
variables are being reset by some other code... and the "watch" is not
finding when the value changes.

"Dave Peterson" wrote:

First, instead of:
wkbActive.Worksheets(xlSheet.Name).Delete

You may want to use:
Application.ActiveWorkbook.Worksheets(xlSheet.Name ).Delete

Actually, I'd use:
xlSheet.Delete

In the code you posted, there's nothing that declares or sets wkbActive.

rogge wrote:

here is my awesome code:

Option Private Module
Option Compare Binary
Option Explicit
Option Base 0

Public Const strDeleteSheet = "delSht"

Private Sub deleteSheets()

Dim xlSheet As Excel.Worksheet

Application.DisplayAlerts = False

For Each xlSheet In Application.ActiveWorkbook.Worksheets
If (xlSheet.CodeName Like strDeleteSheet & "*") Then
wkbActive.Worksheets(xlSheet.Name).Delete
End If
Next xlSheet

Application.DisplayAlerts = True

Set xlSheet = Nothing

End Sub

A not trappable error occurs: xlSheet.Name = <Automation error. The code
does not stop processing. I know this is due to changing the items in
ActiveWorkbook.Worksheets.

This error resets globally declared variables to empty/false/etc...

Any suggestions to delete sheets without resetting global variables?

Thank you.
rogge


--

Dave Peterson


Dave Peterson

Delet Sheets with out Automation Error
 
What kind of code are you using that resets that variable?

Maybe it's better to fix that.

======
But for this situation, I would be surprised (but it's possible), that you
really meant the activeworkbook:

For Each xlSheet In Application.ActiveWorkbook.Worksheets
If (xlSheet.CodeName Like strDeleteSheet & "*") Then
wkbActive.Worksheets(xlSheet.Name).Delete
End If
Next xlSheet


It would be pretty weird (but not unheard of) to loop through one workbook to
delete stuff in another.

rogge wrote:

wkbActive is declared elsewhere...
I do like xlSheet.Delete...

but i had one of our excel experts look at the code, etc.. the public
variables are being reset by some other code... and the "watch" is not
finding when the value changes.

"Dave Peterson" wrote:

First, instead of:
wkbActive.Worksheets(xlSheet.Name).Delete

You may want to use:
Application.ActiveWorkbook.Worksheets(xlSheet.Name ).Delete

Actually, I'd use:
xlSheet.Delete

In the code you posted, there's nothing that declares or sets wkbActive.

rogge wrote:

here is my awesome code:

Option Private Module
Option Compare Binary
Option Explicit
Option Base 0

Public Const strDeleteSheet = "delSht"

Private Sub deleteSheets()

Dim xlSheet As Excel.Worksheet

Application.DisplayAlerts = False

For Each xlSheet In Application.ActiveWorkbook.Worksheets
If (xlSheet.CodeName Like strDeleteSheet & "*") Then
wkbActive.Worksheets(xlSheet.Name).Delete
End If
Next xlSheet

Application.DisplayAlerts = True

Set xlSheet = Nothing

End Sub

A not trappable error occurs: xlSheet.Name = <Automation error. The code
does not stop processing. I know this is due to changing the items in
ActiveWorkbook.Worksheets.

This error resets globally declared variables to empty/false/etc...

Any suggestions to delete sheets without resetting global variables?

Thank you.
rogge


--

Dave Peterson


--

Dave Peterson

rogge

Delet Sheets with out Automation Error
 
All of the code is affecting items in the activeworkbook. I don't use code
in this workbook to change objects in another workbook.

Only callbacks (procedures executed from the ribbon) set this boolean
variable.

I am going to ask this resetting question in a separate thread because i
have found that ending the code execution resets the boolean.... please
search for "rogge"

thanks for your help.

"Dave Peterson" wrote:

What kind of code are you using that resets that variable?

Maybe it's better to fix that.

======
But for this situation, I would be surprised (but it's possible), that you
really meant the activeworkbook:



Dave Peterson

Delet Sheets with out Automation Error
 
I don't use the End command (not End sub and not end if ...) in code. It ends
the running macro, but doesn't do it gracefully (as you've seen).

rogge wrote:

All of the code is affecting items in the activeworkbook. I don't use code
in this workbook to change objects in another workbook.

Only callbacks (procedures executed from the ribbon) set this boolean
variable.

I am going to ask this resetting question in a separate thread because i
have found that ending the code execution resets the boolean.... please
search for "rogge"

thanks for your help.

"Dave Peterson" wrote:

What kind of code are you using that resets that variable?

Maybe it's better to fix that.

======
But for this situation, I would be surprised (but it's possible), that you
really meant the activeworkbook:


--

Dave Peterson


All times are GMT +1. The time now is 02:56 PM.

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