ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Error 424 Object Required when passing range as parameter (https://www.excelbanter.com/excel-programming/365871-error-424-object-required-when-passing-range-parameter.html)

carrick

Error 424 Object Required when passing range as parameter
 
I have a procedure that should copy a table template (borders and such)
to a specified range. When I pass the target range AS Range, the proc
will alternately work and not work. Yes alternaterly. When it doesn't
work, i get error 424.

Note: If i rewrtie the code so that the the target range is passed as
a string, the proc works fine.

What am i doing wrong?

Sub MDebug_CallTblCreate()
'QDResults. is waht the table will be called/
'wsQDResults.Range("E6") is where i want the table created.
wsQDResults is a named worksheet
MTables_TblCreate "QDResults", wsQDResults.Range("E5"),
Range("TD_Style3"), Range("QD_AllYees"
End Sub

Sub MTables_TblCreate(ByVal sTblName As String, ByVal rWhere As Range,
ByVal rTblDef As Range, ByVal sQryDef As Range,
ByVal bExclusive as Bollean)
'Proc to copy a table template onto target range
'Parameters
' sTblName Name that will be given to the table.
' rWhere Range where table will be copied to
' rTblDef Table definition associated with the table
' rQryDef Query definition associated with the table
' bExclusive If True, clear sheet before copy-paste

Dim wsStart As Worksheet .
Dim rTDTemplate As Range 'will hold reference to table template

Set wsStart = ActiveSheet 'remember where we started from
rWhere.Parent.Select 'go to target worksheet

'Delete existing UsedRange if exclusivsive
If bExclusive Then
rWhere.Parent.UsedRange.EntireRow.Delete
End If

'rTblDef is a single cell named-range. It is used as an anchor to
'offset to cells containing values that decribe the formatting of a
'table. In this case,
' rTblDef.Offset(giTTNameRow,0).value
'returns the name of of the table template.
Set rTDTemplate = Range(rTblDef.Offset(giTTNameRow, 0).Value)
rTDTemplate.Copy 'Copy the table template
rWhere.PasteSpecial xlPasteAll 'THIS LINE CAUSES ERROR ALTERNATELY!

'.
'rest of procedure not shown...
End Sub

Thank you in advance ^^


RB Smissaert

Error 424 Object Required when passing range as parameter
 
2 things:
Put Option Explicit at the top of every module.
At least it would pick up the error of: as Bollean
Secondly, take out all your ByVal.
It will then be the default, which is ByRef and I think that is what you
want.

RBS

"carrick" wrote in message
oups.com...
I have a procedure that should copy a table template (borders and such)
to a specified range. When I pass the target range AS Range, the proc
will alternately work and not work. Yes alternaterly. When it doesn't
work, i get error 424.

Note: If i rewrtie the code so that the the target range is passed as
a string, the proc works fine.

What am i doing wrong?

Sub MDebug_CallTblCreate()
'QDResults. is waht the table will be called/
'wsQDResults.Range("E6") is where i want the table created.
wsQDResults is a named worksheet
MTables_TblCreate "QDResults", wsQDResults.Range("E5"),
Range("TD_Style3"), Range("QD_AllYees"
End Sub

Sub MTables_TblCreate(ByVal sTblName As String, ByVal rWhere As Range,
ByVal rTblDef As Range, ByVal sQryDef As Range,
ByVal bExclusive as Bollean)
'Proc to copy a table template onto target range
'Parameters
' sTblName Name that will be given to the table.
' rWhere Range where table will be copied to
' rTblDef Table definition associated with the table
' rQryDef Query definition associated with the table
' bExclusive If True, clear sheet before copy-paste

Dim wsStart As Worksheet .
Dim rTDTemplate As Range 'will hold reference to table template

Set wsStart = ActiveSheet 'remember where we started from
rWhere.Parent.Select 'go to target worksheet

'Delete existing UsedRange if exclusivsive
If bExclusive Then
rWhere.Parent.UsedRange.EntireRow.Delete
End If

'rTblDef is a single cell named-range. It is used as an anchor to
'offset to cells containing values that decribe the formatting of a
'table. In this case,
' rTblDef.Offset(giTTNameRow,0).value
'returns the name of of the table template.
Set rTDTemplate = Range(rTblDef.Offset(giTTNameRow, 0).Value)
rTDTemplate.Copy 'Copy the table template
rWhere.PasteSpecial xlPasteAll 'THIS LINE CAUSES ERROR ALTERNATELY!

'.
'rest of procedure not shown...
End Sub

Thank you in advance ^^



carrick

Error 424 Object Required when passing range as parameter
 
Sorry for the as Bollean typo.
The module does have an Option Explicit statement.
I took of all the ByVal as you suggested but am still getting the same
result.
But thank you for the suggestion.

RB Smissaert wrote:
2 things:
Put Option Explicit at the top of every module.
At least it would pick up the error of: as Bollean
Secondly, take out all your ByVal.
It will then be the default, which is ByRef and I think that is what you
want.

RBS

"carrick" wrote in message
oups.com...
I have a procedure that should copy a table template (borders and such)
to a specified range. When I pass the target range AS Range, the proc
will alternately work and not work. Yes alternaterly. When it doesn't
work, i get error 424.

Note: If i rewrtie the code so that the the target range is passed as
a string, the proc works fine.

What am i doing wrong?

Sub MDebug_CallTblCreate()
'QDResults. is waht the table will be called/
'wsQDResults.Range("E6") is where i want the table created.
wsQDResults is a named worksheet
MTables_TblCreate "QDResults", wsQDResults.Range("E5"),
Range("TD_Style3"), Range("QD_AllYees"
End Sub

Sub MTables_TblCreate(ByVal sTblName As String, ByVal rWhere As Range,
ByVal rTblDef As Range, ByVal sQryDef As Range,
ByVal bExclusive as Bollean)
'Proc to copy a table template onto target range
'Parameters
' sTblName Name that will be given to the table.
' rWhere Range where table will be copied to
' rTblDef Table definition associated with the table
' rQryDef Query definition associated with the table
' bExclusive If True, clear sheet before copy-paste

Dim wsStart As Worksheet .
Dim rTDTemplate As Range 'will hold reference to table template

Set wsStart = ActiveSheet 'remember where we started from
rWhere.Parent.Select 'go to target worksheet

'Delete existing UsedRange if exclusivsive
If bExclusive Then
rWhere.Parent.UsedRange.EntireRow.Delete
End If

'rTblDef is a single cell named-range. It is used as an anchor to
'offset to cells containing values that decribe the formatting of a
'table. In this case,
' rTblDef.Offset(giTTNameRow,0).value
'returns the name of of the table template.
Set rTDTemplate = Range(rTblDef.Offset(giTTNameRow, 0).Value)
rTDTemplate.Copy 'Copy the table template
rWhere.PasteSpecial xlPasteAll 'THIS LINE CAUSES ERROR ALTERNATELY!

'.
'rest of procedure not shown...
End Sub

Thank you in advance ^^




All times are GMT +1. The time now is 05:37 PM.

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