| 
    
     |  | こんにちは。かみちゃん です。 
 >としていますが、エラーがでます。(オブジェクトはサポートしていません。)
 
 どこのコードでエラーが出ていますか?
 エラーメッセージが表示されると、「デバッグ」ボタンがクリックできるようで
 あれば、それをクリックすると、原因となっているコードが反転表示されますの
 で、それも明示するようにしましょう。
 
 ActiveCell.xlLastCell
 は、どのようなお考えで記述されたのでしょうか?
 詳しくは、以下にも載っているので確認していただきたいのですが、
 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_030_100.html
 (先頭4文字は、全角文字になっているので、半角にしてください)
 列の値の入っている最終行は、Endプロパティで取得できます。
 End(xlToLeft)は、行方向なので、同じ要領です。
 
 そこで、以下のようにします。
 
 Sub Sample1()
 '価格自動入力
 Dim i As Integer
 Application.ScreenUpdating = False
 '3行目で検索
 For i = Range("IV3").End(xlToLeft).Column To 1 Step -1
 If InStr(Cells(3, i).Value, "価格") > 0 Then
 Cells(4, i).FormulaR1C1 = "=Sheet1!R[-1]C[-5]"
 If Range(Cells(4, i), Cells(Rows.Count, i).End(xlUp)).Count > 1 Then
 Cells(4, i).AutoFill Destination:=Range(Cells(4, i), Cells(Rows.Count, i).End(xlUp)), Type:=xlFillValues
 '   Selection.AutoFill Destination:=Range(Selection, ActiveCell.xlLastCell), Type:=xlFillValues
 End If
 End If
 Next i
 Application.ScreenUpdating = False
 End Sub
 
 オートフィルをしなくても、以下のような記述の仕方でもできます。
 数式設定範囲のセル指定のコードが複雑かもしれませんが・・・
 
 Sub Sample1_1()
 '価格自動入力
 Dim i As Integer
 Application.ScreenUpdating = False
 '3行目で検索
 For i = Range("IV3").End(xlToLeft).Column To 1 Step -1
 With Cells(3, i)
 If InStr(.Value, "価格") > 0 Then
 .Offset(1).Resize(.Offset(Rows.Count - .Row).End(xlUp).Row - .Row) _
 .FormulaR1C1 = "=Sheet1!R[-1]C[-5]"
 End If
 End With
 Next i
 Application.ScreenUpdating = False
 End Sub
 
 |  |