Select and Sort by tab color - crashes Excel

J

jeremiah

My code below works as long as it finds that tab color, but in the event
there are no tabs with this colorindex it crashes Excel completely. My tabs
colors are assigned earlier in the process by criteria. It is looking for
seasonal employees, which we will not have until March so when this part of
the code runs it crashes. Is there an easy workaround?

Sub Select1seasonal()
Dim s() As String
Dim ws As Worksheet
Dim i As Integer
i = 0
For Each ws In Worksheets
If ws.Tab.ColorIndex = 37 Then
ReDim Preserve s(i)
s(i) = ws.Name
i = i + 1
End If
Next ws
Worksheets(s).Select
 
J

Jim Cone

If no tabs are found, you are telling Excel to select a non-existent
worksheet using an empty array as the worksheet name.
That's probably the reason for the crash.
If any tab has the proper color the value of i will not be zero so
you can use this below the "Next ws" line...
'--
If i > 0 Then
Worksheets(s).Select
Else
MsgBox "No worksheets found. "
End If
--
Jim Cone
Portland, Oregon USA


"jeremiah"
<[email protected]>
wrote in message
My code below works as long as it finds that tab color, but in the event
there are no tabs with this colorindex it crashes Excel completely. My tabs
colors are assigned earlier in the process by criteria. It is looking for
seasonal employees, which we will not have until March so when this part of
the code runs it crashes. Is there an easy workaround?

Sub Select1seasonal()
Dim s() As String
Dim ws As Worksheet
Dim i As Integer
i = 0
For Each ws In Worksheets
If ws.Tab.ColorIndex = 37 Then
ReDim Preserve s(i)
s(i) = ws.Name
i = i + 1
End If
Next ws
Worksheets(s).Select
 
G

Gary''s Student

Fortunately have have the variable i:

Sub Select1seasonal()
Dim s() As String
Dim ws As Worksheet
Dim i As Integer
i = 0
For Each ws In Worksheets
If ws.Tab.ColorIndex = 37 Then
ReDim Preserve s(i)
s(i) = ws.Name
i = i + 1
End If
Next ws
If i <> 0 Then
Worksheets(s).Select
End If
End Sub
 
J

jeremiah

Once again, you guys have saved me. Thank you...
Gary''s Student said:
Fortunately have have the variable i:

Sub Select1seasonal()
Dim s() As String
Dim ws As Worksheet
Dim i As Integer
i = 0
For Each ws In Worksheets
If ws.Tab.ColorIndex = 37 Then
ReDim Preserve s(i)
s(i) = ws.Name
i = i + 1
End If
Next ws
If i <> 0 Then
Worksheets(s).Select
End If
End Sub
 
G

Gary Keramidas

you don't even need to use an array, and thus have to worry about a
non-existent sheet.

Sub Select1seasonal()
Dim i As Long
For i = 1 To Worksheets.Count
If Worksheets(i).Tab.ColorIndex = 37 Then
Worksheets(i).Select False
End If
Next
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top