Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 125
Default Need help with deleteing sheets using VBA

Ok the object of this code is that once it is done running that It will
cumulatively Select all sheets in a workbook that are NOT named "STable" or
"SChart" much in the same way as if you were to manually hold down the Cntrl
button and start clicking (selecting) multiple sheets with in a workbook

Why doesn't this work ?

here is my code:

Sub Test()
Dim y as integer
Dim t as interger

For y = 1 To SheetCount
If Not Sheets(y).Name = "STable" Then
If Not Sheets(y).Name = "SChart" Then
t = t + 1
ReDim Preserve SheetsToDel(t)
SheetsToDel(t) = Sheets(y).Name
End If
End If
Next y

For y = 1 To UBound(SheetsToDel())
If y = UBound(SheetsToDel()) Then
StrA = Chr(34) + SheetsToDel(y) + Chr(34)
Else
StrA = Chr(34) + SheetsToDel(y) + Chr(34) + ","
End If
StrB = StrB + StrA
Next y
Sheets(Array(StrB)).Select
End Sub

This doesn't work and yet if I just try this line of code:

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select

It works. My StrB is the same thing as manually typing in the string the
the line above so what gives any thoughts ??


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,365
Default Need help with deleteing sheets using VBA

I wouldn't even worry with the array, you've got all of the sheet names
needing to be deleted in SheetsToDel(), just use it:

Application.DisplayAlerts = False ' prevent nags
for y = Lbound(SheetsToDel) to UBound(SheetsToDel)
If SheetsToDel(y)<"" Then
Sheets(SheetsToDel(y)).Delete
End IF
Next
Application.DisplayAlerts=True

Take note of the way the reference to the SheetsToDel array is made in the
LBound() and UBound statements also.

"Dan Thompson" wrote:

Ok the object of this code is that once it is done running that It will
cumulatively Select all sheets in a workbook that are NOT named "STable" or
"SChart" much in the same way as if you were to manually hold down the Cntrl
button and start clicking (selecting) multiple sheets with in a workbook

Why doesn't this work ?

here is my code:

Sub Test()
Dim y as integer
Dim t as interger

For y = 1 To SheetCount
If Not Sheets(y).Name = "STable" Then
If Not Sheets(y).Name = "SChart" Then
t = t + 1
ReDim Preserve SheetsToDel(t)
SheetsToDel(t) = Sheets(y).Name
End If
End If
Next y

For y = 1 To UBound(SheetsToDel())
If y = UBound(SheetsToDel()) Then
StrA = Chr(34) + SheetsToDel(y) + Chr(34)
Else
StrA = Chr(34) + SheetsToDel(y) + Chr(34) + ","
End If
StrB = StrB + StrA
Next y
Sheets(Array(StrB)).Select
End Sub

This doesn't work and yet if I just try this line of code:

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select

It works. My StrB is the same thing as manually typing in the string the
the line above so what gives any thoughts ??


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 125
Default Need help with deleteing sheets using VBA

Thanks JLatham your code works fine

although I'm a little confused about this part of your code works

If SheetsToDel(y)<"" Then
Sheets(SheetsToDel(y)).Delete
End IF


If I am getting this right that part in your code says that
If the value of SheetsToDel(y) greater than or less than any of the table
names
contained within SheetsToDel() array then delete those sheets which seems
backwards to me because all the values of that array are the names of the
sheets to which I want to delete. And yet it works and deletes all the
sheetnames with in the SheetsToDel() array and leaves the remaining sheets
still in the workbook.
Which is exactly what I wanted it to do. Perhaps you can explain the path of
logic behind this part of your code cause even though it works I don't
understand why ?

Thanks again
Dan Thompson


"JLatham" wrote:

I wouldn't even worry with the array, you've got all of the sheet names
needing to be deleted in SheetsToDel(), just use it:

Application.DisplayAlerts = False ' prevent nags
for y = Lbound(SheetsToDel) to UBound(SheetsToDel)
If SheetsToDel(y)<"" Then
Sheets(SheetsToDel(y)).Delete
End IF
Next
Application.DisplayAlerts=True

Take note of the way the reference to the SheetsToDel array is made in the
LBound() and UBound statements also.

"Dan Thompson" wrote:

Ok the object of this code is that once it is done running that It will
cumulatively Select all sheets in a workbook that are NOT named "STable" or
"SChart" much in the same way as if you were to manually hold down the Cntrl
button and start clicking (selecting) multiple sheets with in a workbook

Why doesn't this work ?

here is my code:

Sub Test()
Dim y as integer
Dim t as interger

For y = 1 To SheetCount
If Not Sheets(y).Name = "STable" Then
If Not Sheets(y).Name = "SChart" Then
t = t + 1
ReDim Preserve SheetsToDel(t)
SheetsToDel(t) = Sheets(y).Name
End If
End If
Next y

For y = 1 To UBound(SheetsToDel())
If y = UBound(SheetsToDel()) Then
StrA = Chr(34) + SheetsToDel(y) + Chr(34)
Else
StrA = Chr(34) + SheetsToDel(y) + Chr(34) + ","
End If
StrB = StrB + StrA
Next y
Sheets(Array(StrB)).Select
End Sub

This doesn't work and yet if I just try this line of code:

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select

It works. My StrB is the same thing as manually typing in the string the
the line above so what gives any thoughts ??


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 125
Default Need help with deleteing sheets using VBA

Ok disregard my last reply to your post I figured it out although I also
noticed that
Line [If SheetsToDel(y)<"" Then] is not nessicary

It works fine with just [Sheets(SheetsToDel(y)).Delete] by itself

Thanks for your help it was very usefull.

cheers.




"Dan Thompson" wrote:

Thanks JLatham your code works fine

although I'm a little confused about this part of your code works

If SheetsToDel(y)<"" Then
Sheets(SheetsToDel(y)).Delete
End IF


If I am getting this right that part in your code says that
If the value of SheetsToDel(y) greater than or less than any of the table
names
contained within SheetsToDel() array then delete those sheets which seems
backwards to me because all the values of that array are the names of the
sheets to which I want to delete. And yet it works and deletes all the
sheetnames with in the SheetsToDel() array and leaves the remaining sheets
still in the workbook.
Which is exactly what I wanted it to do. Perhaps you can explain the path of
logic behind this part of your code cause even though it works I don't
understand why ?

Thanks again
Dan Thompson


"JLatham" wrote:

I wouldn't even worry with the array, you've got all of the sheet names
needing to be deleted in SheetsToDel(), just use it:

Application.DisplayAlerts = False ' prevent nags
for y = Lbound(SheetsToDel) to UBound(SheetsToDel)
If SheetsToDel(y)<"" Then
Sheets(SheetsToDel(y)).Delete
End IF
Next
Application.DisplayAlerts=True

Take note of the way the reference to the SheetsToDel array is made in the
LBound() and UBound statements also.

"Dan Thompson" wrote:

Ok the object of this code is that once it is done running that It will
cumulatively Select all sheets in a workbook that are NOT named "STable" or
"SChart" much in the same way as if you were to manually hold down the Cntrl
button and start clicking (selecting) multiple sheets with in a workbook

Why doesn't this work ?

here is my code:

Sub Test()
Dim y as integer
Dim t as interger

For y = 1 To SheetCount
If Not Sheets(y).Name = "STable" Then
If Not Sheets(y).Name = "SChart" Then
t = t + 1
ReDim Preserve SheetsToDel(t)
SheetsToDel(t) = Sheets(y).Name
End If
End If
Next y

For y = 1 To UBound(SheetsToDel())
If y = UBound(SheetsToDel()) Then
StrA = Chr(34) + SheetsToDel(y) + Chr(34)
Else
StrA = Chr(34) + SheetsToDel(y) + Chr(34) + ","
End If
StrB = StrB + StrA
Next y
Sheets(Array(StrB)).Select
End Sub

This doesn't work and yet if I just try this line of code:

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select

It works. My StrB is the same thing as manually typing in the string the
the line above so what gives any thoughts ??


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,365
Default Need help with deleteing sheets using VBA

That trap was in there just in case there is an element of the array that
doesn't have a sheet name in it. Have to go back and look at your original
code, I didn't look closely initially. But if you redimension the array to
hold another name but there is no other name to put into it, the UBound()
element of it would be empty - this prevents an error if that turns out to be
the case. But if working without it, great.

"Dan Thompson" wrote:

Ok disregard my last reply to your post I figured it out although I also
noticed that
Line [If SheetsToDel(y)<"" Then] is not nessicary

It works fine with just [Sheets(SheetsToDel(y)).Delete] by itself

Thanks for your help it was very usefull.

cheers.




"Dan Thompson" wrote:

Thanks JLatham your code works fine

although I'm a little confused about this part of your code works

If SheetsToDel(y)<"" Then
Sheets(SheetsToDel(y)).Delete
End IF


If I am getting this right that part in your code says that
If the value of SheetsToDel(y) greater than or less than any of the table
names
contained within SheetsToDel() array then delete those sheets which seems
backwards to me because all the values of that array are the names of the
sheets to which I want to delete. And yet it works and deletes all the
sheetnames with in the SheetsToDel() array and leaves the remaining sheets
still in the workbook.
Which is exactly what I wanted it to do. Perhaps you can explain the path of
logic behind this part of your code cause even though it works I don't
understand why ?

Thanks again
Dan Thompson


"JLatham" wrote:

I wouldn't even worry with the array, you've got all of the sheet names
needing to be deleted in SheetsToDel(), just use it:

Application.DisplayAlerts = False ' prevent nags
for y = Lbound(SheetsToDel) to UBound(SheetsToDel)
If SheetsToDel(y)<"" Then
Sheets(SheetsToDel(y)).Delete
End IF
Next
Application.DisplayAlerts=True

Take note of the way the reference to the SheetsToDel array is made in the
LBound() and UBound statements also.

"Dan Thompson" wrote:

Ok the object of this code is that once it is done running that It will
cumulatively Select all sheets in a workbook that are NOT named "STable" or
"SChart" much in the same way as if you were to manually hold down the Cntrl
button and start clicking (selecting) multiple sheets with in a workbook

Why doesn't this work ?

here is my code:

Sub Test()
Dim y as integer
Dim t as interger

For y = 1 To SheetCount
If Not Sheets(y).Name = "STable" Then
If Not Sheets(y).Name = "SChart" Then
t = t + 1
ReDim Preserve SheetsToDel(t)
SheetsToDel(t) = Sheets(y).Name
End If
End If
Next y

For y = 1 To UBound(SheetsToDel())
If y = UBound(SheetsToDel()) Then
StrA = Chr(34) + SheetsToDel(y) + Chr(34)
Else
StrA = Chr(34) + SheetsToDel(y) + Chr(34) + ","
End If
StrB = StrB + StrA
Next y
Sheets(Array(StrB)).Select
End Sub

This doesn't work and yet if I just try this line of code:

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select

It works. My StrB is the same thing as manually typing in the string the
the line above so what gives any thoughts ??




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
deleteing objects Debi Excel Discussion (Misc queries) 2 January 16th 07 06:25 PM
deleteing documents Gildee New Users to Excel 1 November 8th 06 09:31 AM
Deleteing koba Excel Discussion (Misc queries) 2 November 25th 05 04:11 AM
deleteing duplicates syssupspe Excel Discussion (Misc queries) 2 April 28th 05 12:15 AM
Deleteing Rows Michael Vaughan Excel Programming 2 September 20th 04 09:53 PM


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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"