Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
deleteing objects | Excel Discussion (Misc queries) | |||
deleteing documents | New Users to Excel | |||
Deleteing | Excel Discussion (Misc queries) | |||
deleteing duplicates | Excel Discussion (Misc queries) | |||
Deleteing Rows | Excel Programming |