ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Runtime error 438 (https://www.excelbanter.com/excel-programming/421692-runtime-error-438-a.html)

Greg Snidow

Runtime error 438
 
Greetings. I came across a site that helps introduce the concept of macros.
There is one example...

Sub Example2()
For x = 1 To 5
Cells(x, 3).Select
Selection.Vaue = x + 1
Next x
End Sub

that is simple enough, but when I try to run it, I get 'Runtime error '438'
Object doesn't support this property or method'. When I hit help, it says
some stuff about a friend procedure being called late bound, and automation
objects. Does anyone know what is happening? Thank you.

Greg


Per Jessen[_2_]

Runtime error 438
 
Greetings Greg

It's due to a typo.

Change the line to:

Selection.Value = x+1

Regards,
Per

On 24 Dec., 14:34, Greg Snidow
wrote:
Greetings. *I came across a site that helps introduce the concept of macros. *
There is one example...

Sub Example2()
* * For x = 1 To 5
* * * *Cells(x, 3).Select
* * * *Selection.Vaue = x + 1
* * Next x
End Sub

that is simple enough, but when I try to run it, I get 'Runtime error '438'
Object doesn't support this property or method'. *When I hit help, it says
some stuff about a friend procedure being called late bound, and automation
objects. *Does anyone know what is happening? *Thank you.

Greg



Dave Peterson

Runtime error 438
 
There's a typo in the code:

Selection.Vaue = x + 1
should be:
Selection.Value = x + 1

I'd use:

Option Explicit
Sub Example2()
Dim x As Long
For x = 1 To 5
ActiveSheet.Cells(x, 3).Value = x + 1
Next x
End Sub

"Option Explicit" forces me to declare my variables (x in this example).

I qualified cells(x,3) with activesheet. So I know what sheet is getting the
numbers.

I removed the .select line and just plopped the value directly into the cell.
There are very few things that need to be selected for the code to work.



Greg Snidow wrote:

Greetings. I came across a site that helps introduce the concept of macros.
There is one example...

Sub Example2()
For x = 1 To 5
Cells(x, 3).Select
Selection.Vaue = x + 1
Next x
End Sub

that is simple enough, but when I try to run it, I get 'Runtime error '438'
Object doesn't support this property or method'. When I hit help, it says
some stuff about a friend procedure being called late bound, and automation
objects. Does anyone know what is happening? Thank you.

Greg


--

Dave Peterson

Don Guillett

Runtime error 438
 
Sub Example2()
For x = 1 To 5
Cells(x, 3).VaLue = x + 1
Next x
End Sub


--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Greg Snidow" wrote in message
...
Greetings. I came across a site that helps introduce the concept of
macros.
There is one example...

Sub Example2()
For x = 1 To 5
Cells(x, 3).Select
Selection.Vaue = x + 1
Next x
End Sub

that is simple enough, but when I try to run it, I get 'Runtime error
'438'
Object doesn't support this property or method'. When I hit help, it says
some stuff about a friend procedure being called late bound, and
automation
objects. Does anyone know what is happening? Thank you.

Greg



Rick Rothstein

Runtime error 438
 
Others have shown you code that does not use Select and Selection. Perhaps
this previous posting of mine (a response to another person using
Select/Selection type constructions) will be of some help to you in your
future programming...

Whenever you see code constructed like this...

Range("A1").Select
Selection.<whatever

you can almost always do this instead...

Range("A1").<whatever

In your particular case, you have this...

Range("C2:C8193").Select 'select cells to export
For Each r In Selection.Rows

which, using the above concept, can be reduced to this...

For Each r In Range("C2:C8193").Rows

Notice, all I have done is replace Selection with the range you Select(ed)
in the previous statement and eliminate the process of doing any
Select(ion)s. Stated another way, the Selection produced from
Range(...).Select is a range and, of course, Range(...) is a range... and,
in fact, they are the same range, so it doesn't matter which one you use.
The added benefit of not selecting ranges first is your active cell does not
change.

--
Rick (MVP - Excel)


"Greg Snidow" wrote in message
...
Greetings. I came across a site that helps introduce the concept of
macros.
There is one example...

Sub Example2()
For x = 1 To 5
Cells(x, 3).Select
Selection.Vaue = x + 1
Next x
End Sub

that is simple enough, but when I try to run it, I get 'Runtime error
'438'
Object doesn't support this property or method'. When I hit help, it says
some stuff about a friend procedure being called late bound, and
automation
objects. Does anyone know what is happening? Thank you.

Greg




All times are GMT +1. The time now is 10:07 AM.

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