ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Runtime Type mismatch Error 13 when object not found (https://www.excelbanter.com/excel-programming/415137-runtime-type-mismatch-error-13-when-object-not-found.html)

owlnevada

Runtime Type mismatch Error 13 when object not found
 
In Excel 2007 I keep getting this error when this code encounters a workbook
that has no worksheet objects that match the criteria selected. Most
workbooks have either "abs" or "sum" as part of the tabnames and macro stops
if none exists in many cases. A similar sub to one below will select all the
sheets with "abs" in the tabname. It hangs at "Sheets(Sheetnames).Select".
The errorhandler does not work as entered-is this fixable?

Thanks in advance for any help.


Sub SelectAllSummarys() '(Optional control As IRibbonControl)

'Selects All Summarys Macro Clicks on each summary for further work
' Keyboard Shortcut: Ctrl+Shift+S

Dim i As Integer
Dim Sheetnames() As String
Dim Count As Integer

sumCount = 0
For i = 1 To Sheets.Count
If InStr(Sheets(i).Name, "sum") Then
' got a handle on a summary sheet -
' Save the name of the sheet in an array
Count = Count + 1 ' we need to count the sheets
ReDim Preserve Sheetnames(1 To Count) ' so we can resize the
array to the number of sheets
Sheetnames(Count) = Sheets(i).Name
End If
Next i
' Now all the names of the sheets that we want are in an array, select
them all at once
Sheets(Sheetnames).Select
On Error Resume Next
Exit Sub

End Sub

OssieMac

Runtime Type mismatch Error 13 when object not found
 
Try this

On Error Resume Next
If UBound(Sheetnames) 0 Then
Sheets(Sheetnames).Select
End If

--
Regards,

OssieMac


"owlnevada" wrote:

In Excel 2007 I keep getting this error when this code encounters a workbook
that has no worksheet objects that match the criteria selected. Most
workbooks have either "abs" or "sum" as part of the tabnames and macro stops
if none exists in many cases. A similar sub to one below will select all the
sheets with "abs" in the tabname. It hangs at "Sheets(Sheetnames).Select".
The errorhandler does not work as entered-is this fixable?

Thanks in advance for any help.


Sub SelectAllSummarys() '(Optional control As IRibbonControl)

'Selects All Summarys Macro Clicks on each summary for further work
' Keyboard Shortcut: Ctrl+Shift+S

Dim i As Integer
Dim Sheetnames() As String
Dim Count As Integer

sumCount = 0
For i = 1 To Sheets.Count
If InStr(Sheets(i).Name, "sum") Then
' got a handle on a summary sheet -
' Save the name of the sheet in an array
Count = Count + 1 ' we need to count the sheets
ReDim Preserve Sheetnames(1 To Count) ' so we can resize the
array to the number of sheets
Sheetnames(Count) = Sheets(i).Name
End If
Next i
' Now all the names of the sheets that we want are in an array, select
them all at once
Sheets(Sheetnames).Select
On Error Resume Next
Exit Sub

End Sub


OssieMac

Runtime Type mismatch Error 13 when object not found
 
I have had another look at this and can't believe I missed it.

The On Error should be prior to the code where it is to suppress the error

On Error Resume Next
Sheets(Sheetnames).Select

--
Regards,

OssieMac


"OssieMac" wrote:

Try this

On Error Resume Next
If UBound(Sheetnames) 0 Then
Sheets(Sheetnames).Select
End If

--
Regards,

OssieMac


"owlnevada" wrote:

In Excel 2007 I keep getting this error when this code encounters a workbook
that has no worksheet objects that match the criteria selected. Most
workbooks have either "abs" or "sum" as part of the tabnames and macro stops
if none exists in many cases. A similar sub to one below will select all the
sheets with "abs" in the tabname. It hangs at "Sheets(Sheetnames).Select".
The errorhandler does not work as entered-is this fixable?

Thanks in advance for any help.


Sub SelectAllSummarys() '(Optional control As IRibbonControl)

'Selects All Summarys Macro Clicks on each summary for further work
' Keyboard Shortcut: Ctrl+Shift+S

Dim i As Integer
Dim Sheetnames() As String
Dim Count As Integer

sumCount = 0
For i = 1 To Sheets.Count
If InStr(Sheets(i).Name, "sum") Then
' got a handle on a summary sheet -
' Save the name of the sheet in an array
Count = Count + 1 ' we need to count the sheets
ReDim Preserve Sheetnames(1 To Count) ' so we can resize the
array to the number of sheets
Sheetnames(Count) = Sheets(i).Name
End If
Next i
' Now all the names of the sheets that we want are in an array, select
them all at once
Sheets(Sheetnames).Select
On Error Resume Next
Exit Sub

End Sub


Dave Peterson

Runtime Type mismatch Error 13 when object not found
 
I wouldn't use Count as a variable name.

And I'd allocate enough room in that array for all the sheets (just once) and
then keep track of how many I used. Then resize the array for that number:

Option Explicit
Sub SelectAllSummarys() '(Optional control As IRibbonControl)

Dim i As Long
Dim SheetNames() As String
Dim sCounter As Long

ReDim SheetNames(1 To Sheets.Count)
sCounter = 0
For i = 1 To Sheets.Count
If InStr(1, Sheets(i).Name, "sum", vbTextCompare) Then
sCounter = sCounter + 1
SheetNames(sCounter) = Sheets(i).Name
End If
Next i

If sCounter = 0 Then
MsgBox "No Sum sheets found!"
Else
ReDim Preserve SheetNames(1 To sCounter)
Sheets(SheetNames).Select
End If

End Sub



owlnevada wrote:

In Excel 2007 I keep getting this error when this code encounters a workbook
that has no worksheet objects that match the criteria selected. Most
workbooks have either "abs" or "sum" as part of the tabnames and macro stops
if none exists in many cases. A similar sub to one below will select all the
sheets with "abs" in the tabname. It hangs at "Sheets(Sheetnames).Select".
The errorhandler does not work as entered-is this fixable?

Thanks in advance for any help.

Sub SelectAllSummarys() '(Optional control As IRibbonControl)

'Selects All Summarys Macro Clicks on each summary for further work
' Keyboard Shortcut: Ctrl+Shift+S

Dim i As Integer
Dim Sheetnames() As String
Dim Count As Integer

sumCount = 0
For i = 1 To Sheets.Count
If InStr(Sheets(i).Name, "sum") Then
' got a handle on a summary sheet -
' Save the name of the sheet in an array
Count = Count + 1 ' we need to count the sheets
ReDim Preserve Sheetnames(1 To Count) ' so we can resize the
array to the number of sheets
Sheetnames(Count) = Sheets(i).Name
End If
Next i
' Now all the names of the sheets that we want are in an array, select
them all at once
Sheets(Sheetnames).Select
On Error Resume Next
Exit Sub

End Sub


--

Dave Peterson

owlnevada

Runtime Type mismatch Error 13 when object not found
 
That helped with part of the problem. . .

"OssieMac" wrote:

I have had another look at this and can't believe I missed it.

The On Error should be prior to the code where it is to suppress the error

On Error Resume Next
Sheets(Sheetnames).Select

--
Regards,

OssieMac


"OssieMac" wrote:

Try this

On Error Resume Next
If UBound(Sheetnames) 0 Then
Sheets(Sheetnames).Select
End If

--
Regards,

OssieMac


"owlnevada" wrote:

In Excel 2007 I keep getting this error when this code encounters a workbook
that has no worksheet objects that match the criteria selected. Most
workbooks have either "abs" or "sum" as part of the tabnames and macro stops
if none exists in many cases. A similar sub to one below will select all the
sheets with "abs" in the tabname. It hangs at "Sheets(Sheetnames).Select".
The errorhandler does not work as entered-is this fixable?

Thanks in advance for any help.


Sub SelectAllSummarys() '(Optional control As IRibbonControl)

'Selects All Summarys Macro Clicks on each summary for further work
' Keyboard Shortcut: Ctrl+Shift+S

Dim i As Integer
Dim Sheetnames() As String
Dim Count As Integer

sumCount = 0
For i = 1 To Sheets.Count
If InStr(Sheets(i).Name, "sum") Then
' got a handle on a summary sheet -
' Save the name of the sheet in an array
Count = Count + 1 ' we need to count the sheets
ReDim Preserve Sheetnames(1 To Count) ' so we can resize the
array to the number of sheets
Sheetnames(Count) = Sheets(i).Name
End If
Next i
' Now all the names of the sheets that we want are in an array, select
them all at once
Sheets(Sheetnames).Select
On Error Resume Next
Exit Sub

End Sub



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

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