Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Array Code to Delete Worksheets

I am using some code to create arrays based on the value of a cell. Works
just great. Now I need to figure out how to use the same value to create case
values that can make array's to delete some different cells. As an simple
example:

Cell a1 is A or b or c etc

Code sets up arrays to display only certain sheets ie

a = (sheet1,sheet4,sheet5)
b=(sheet22,sheet23,sheet24)

For the same a or b, i want to delete some sheets (but not all others) as
well.

Can anyone please make a suggestion on this.

Thanks in advance.


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,302
Default Array Code to Delete Worksheets

Hi Volsfan,

If I understand correctly, perhaps something like the following may help:

'======================
Public Sub Tester02()
Dim SH As Worksheet
Dim arrDelete As Variant
Dim arrExceptions As Variant

arrDelete = Array("Sheet1", "Sheet4", "Sheet5", "Sheet7", "Sheet9")
arrExceptions = Array("Sheet4", "Sheet7")

For Each SH In ActiveWorkbook.Sheets
If Not IsError(Application.Match(SH.Name, arrDelete, 0)) Then
If IsError(Application.Match(SH.Name, arrExceptions, 0)) Then
'Do something, e.g.:
MsgBox SH.Name
'Or
'SH.Delete
End If
End If
Next SH

End Sub
'======================


---
Regards,
Norman



"Volsfan" wrote in message
...
I am using some code to create arrays based on the value of a cell. Works
just great. Now I need to figure out how to use the same value to create
case
values that can make array's to delete some different cells. As an simple
example:

Cell a1 is A or b or c etc

Code sets up arrays to display only certain sheets ie

a = (sheet1,sheet4,sheet5)
b=(sheet22,sheet23,sheet24)

For the same a or b, i want to delete some sheets (but not all others) as
well.

Can anyone please make a suggestion on this.

Thanks in advance.




  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Array Code to Delete Worksheets

Thanks Norman,

I am traveling, but I will try when I return. I see some things in there
that look promising.

"Norman Jones" wrote:

Hi Volsfan,

If I understand correctly, perhaps something like the following may help:

'======================
Public Sub Tester02()
Dim SH As Worksheet
Dim arrDelete As Variant
Dim arrExceptions As Variant

arrDelete = Array("Sheet1", "Sheet4", "Sheet5", "Sheet7", "Sheet9")
arrExceptions = Array("Sheet4", "Sheet7")

For Each SH In ActiveWorkbook.Sheets
If Not IsError(Application.Match(SH.Name, arrDelete, 0)) Then
If IsError(Application.Match(SH.Name, arrExceptions, 0)) Then
'Do something, e.g.:
MsgBox SH.Name
'Or
'SH.Delete
End If
End If
Next SH

End Sub
'======================


---
Regards,
Norman



"Volsfan" wrote in message
...
I am using some code to create arrays based on the value of a cell. Works
just great. Now I need to figure out how to use the same value to create
case
values that can make array's to delete some different cells. As an simple
example:

Cell a1 is A or b or c etc

Code sets up arrays to display only certain sheets ie

a = (sheet1,sheet4,sheet5)
b=(sheet22,sheet23,sheet24)

For the same a or b, i want to delete some sheets (but not all others) as
well.

Can anyone please make a suggestion on this.

Thanks in advance.





  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Array Code to Delete Worksheets

Ok, Here is the code that I am using to determine which sheets are visible
and which are not:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim arySheets
Dim nVisible As Long
Dim i As Long
Dim sh As Worksheet
On Error GoTo ws_exit:
Application.EnableEvents = False
If Target.Address = "$H$40" Then
With Target
Select Case .Value
Case "A": arySheets = Array("INPUT30", "LD3-30", "WB30",
"CREWWB30", "TABLES30", "LOADSHEET30", "OFFLOAD30", "FPS-CPM30")
Case "B": arySheets = Array("INPUT29", "LD3-29", "WB29",
"CREWWB29", "TABLES29", "LOADSHEET29", "OFFLOAD29", "FPS-CPM29")
Case "T": arySheets = Array("START", "INPUT29", "INPUT30",
"WB29", "WB30", "LD3-29", "LD3-30", "CREWWB29", "CREWWB30", "LOADSHEET29",
"LOADSHEET30", "CGCALCS29", "CGCALCS30", "TABLES", "TABLES29", "TABLES30",
"LDF29", "LDF30", "FPS-CPM29", "FPS-CPM30", "OFFLOAD29", "OFFLOAD30")
End Select
End With
End If

For Each sh In ThisWorkbook.Worksheets
nVisible = xlSheetHidden
For i = LBound(arySheets) To UBound(arySheets)
If sh.Name = arySheets(i) Then
nVisible = xlSheetVisible
Exit For
End If
Next i
sh.Visible = nVisible
Next sh

ws_exit:
Application.EnableEvents = True

End Sub

It works great (Thanks Tom Ogilvy)

I am trying to add code to this change event that will delete the other
sheets that I do not display. Keep in mind that there are other sheets that
do not show up in the above arrays that feed data, but are hidden. So I
cannot just delete all the others except the ones above. Also, I have some
other sheets that have as many as 10 cases vs the 2 shown here. I am trying
to use something like this below, but am not having much luck.

Dim arrDelete As Variant
Dim i as Long
Dim sh as Worksheets

On Error GoTo ws_exit:
Application.EnableEvents = False
If Target.Address = "$H$40" Then
With Target
Select Case .Value
Case "A": arrDelete = Array("INPUT29", "LD3-29", "WB29",
"CREWWB29", "TABLES29", "LOADSHEET29", "OFFLOAD29", "FPS-CPM29")
Case "B": arrDelete = Array("INPUT30", "LD3-30", "WB30",
"CREWWB30", "TABLES30", "LOADSHEET30", "OFFLOAD30", "FPS-CPM30")
Case "T": arrDelete = Array("OFFLOAD29")
End Select
End With
End If

For Each sh In ThisWorkbook.Worksheets
For i = LBound(arrDelete) To UBound(arrDelete)
If sh.Name = arrDelete(i) Then
Worksheets(Array(i)).Delete
Exit For
End If
Next i
Next sh

ws_exit:
Application.EnableEvents = True

Both sections of code do have the arrays spread out, this forum just sliced
them up so that is not the issue.

Can someone help me either integrate this code with the previous, or suggest
a way to add these delete statements to a control button, menu item, or
something?

Thanks again for all the help.





"Volsfan" wrote:

I am using some code to create arrays based on the value of a cell. Works
just great. Now I need to figure out how to use the same value to create case
values that can make array's to delete some different cells. As an simple
example:

Cell a1 is A or b or c etc

Code sets up arrays to display only certain sheets ie

a = (sheet1,sheet4,sheet5)
b=(sheet22,sheet23,sheet24)

For the same a or b, i want to delete some sheets (but not all others) as
well.

Can anyone please make a suggestion on this.

Thanks in advance.


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
Delete Blank Rows Code - Multiple Worksheets - Multiple Documents BenS Excel Discussion (Misc queries) 3 June 29th 07 12:20 AM
Code to delete a Line in a another code helmekki[_88_] Excel Programming 1 August 8th 05 01:14 AM
VBA code delete code but ask for password and unlock VBA protection WashoeJeff Excel Programming 0 January 27th 04 07:07 AM
VBA code to delete VBA code in another Workbook Chip Pearson Excel Programming 0 September 15th 03 03:54 PM
Need code to protect worksheets - amount of worksheets varies Sandy[_3_] Excel Programming 1 September 9th 03 02:17 AM


All times are GMT +1. The time now is 09:57 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"