ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Delete sheets code error requires object (https://www.excelbanter.com/excel-programming/449570-delete-sheets-code-error-requires-object.html)

Howard

Delete sheets code error requires object
 

I found this code that makes a new workbook with one sheet, modified it and deleted some unwanted stuff and added code to do two sheets. Changed the
'ws name' lines to include a date and the format.

The code near the bottom to get rid of any sheet not "named as" was originally for just one new sheet. If s.Name < ws1.Name Then s.Delete

I added for the second sheet but now those lines error out with Object Required.

The Application.DisplayAlerts = False both before AND afterwards is as the code was displayed. This is puzzling to me. Don't know if it is a typo or for real.

When I noticed it I changed the last one to True, but still get the error.
I want to get rid of the default sheet1 to sheet3.

I'm sure there are some Dim statement I don't need, but was going to wait until code worked as I wanted, then dismiss the un-needed ones.

Thanks,
Howard

Option Explicit

Sub aBook()

Dim wb As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim s As Variant
Dim btn As OLEObject
Dim lLines As Long

Application.ScreenUpdating = False
Set wb = Workbooks.Add

Set ws1 = Worksheets.Add
ws1.Name = Format(Date, "[$-409]d-mmm-yy;@") & " First Choice"

Set ws2 = Worksheets.Add
ws2.Name = Format(Date, "[$-409]d-mmm-yy;@") & " Second Choice"

' Application.DisplayAlerts = False
' For Each s In wb.Worksheets
' If s.Name < ws1.Name Then s.Delete
' If s.Name < ws2.Name Then s.Delete
' Next s
' Application.DisplayAlerts = False

Application.ScreenUpdating = True
End Sub

Claus Busch

Delete sheets code error requires object
 
Hi Howard,

Am Mon, 2 Dec 2013 12:02:53 -0800 (PST) schrieb Howard:

I found this code that makes a new workbook with one sheet, modified it and deleted some unwanted stuff and added code to do two sheets. Changed the
'ws name' lines to include a date and the format.

The code near the bottom to get rid of any sheet not "named as" was originally for just one new sheet. If s.Name < ws1.Name Then s.Delete

I added for the second sheet but now those lines error out with Object Required.


the array s is not filled with the sheet names.
But it is easier to do it with For each wsh in ActiveWorkbook.Worksheets

Try:

Sub aBook()

Dim wb As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim wsh As Worksheet
Dim btn As OLEObject
Dim lLines As Long

Application.ScreenUpdating = False

Set wb = Workbooks.Add
Set ws1 = Worksheets.Add
ws1.Name = Format(Date, "[$-409]d-mmm-yy;@") & " First Choice"

Set ws2 = Worksheets.Add
ws2.Name = Format(Date, "[$-409]d-mmm-yy;@") & " Second Choice"

Application.DisplayAlerts = False
For Each wsh In ActiveWorkbook.Worksheets
If wsh.Name < ws1.Name And wsh.Name < ws2.Name Then wsh.Delete
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Regards
Claus B.
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Howard

Delete sheets code error requires object
 
On Monday, December 2, 2013 12:18:44 PM UTC-8, Claus Busch wrote:
Hi Howard,



Am Mon, 2 Dec 2013 12:02:53 -0800 (PST) schrieb Howard:



I found this code that makes a new workbook with one sheet, modified it and deleted some unwanted stuff and added code to do two sheets. Changed the


'ws name' lines to include a date and the format.




The code near the bottom to get rid of any sheet not "named as" was originally for just one new sheet. If s.Name < ws1.Name Then s.Delete




I added for the second sheet but now those lines error out with Object Required.




the array s is not filled with the sheet names.

But it is easier to do it with For each wsh in ActiveWorkbook.Worksheets



Try:



Sub aBook()



Dim wb As Workbook

Dim ws1 As Worksheet, ws2 As Worksheet

Dim wsh As Worksheet

Dim btn As OLEObject

Dim lLines As Long



Application.ScreenUpdating = False



Set wb = Workbooks.Add

Set ws1 = Worksheets.Add

ws1.Name = Format(Date, "[$-409]d-mmm-yy;@") & " First Choice"



Set ws2 = Worksheets.Add

ws2.Name = Format(Date, "[$-409]d-mmm-yy;@") & " Second Choice"



Application.DisplayAlerts = False

For Each wsh In ActiveWorkbook.Worksheets

If wsh.Name < ws1.Name And wsh.Name < ws2.Name Then wsh.Delete

Next

Application.DisplayAlerts = True

Application.ScreenUpdating = True

End Sub



Regards

Claus B.



That clears that up nicely.

Thanks.
Howard


All times are GMT +1. The time now is 09:42 PM.

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