こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VBAでオートフィルができません

エクセル2007です。

画像のようにA列に値を入れて、B列に半角にする関数を入れて、最終行までオートフィルをしたいのですが、
---------------------------------------------------------
Sub test()
Dim 最終行 As Long
最終行 = Cells(65536, 1).End(xlUp).Row

ActiveCell.FormulaR1C1 = "=ASC(RC[-1])"
Selection.AutoFill Destination:=Range("b1:b" & 最終行), Type:=xlFillDefault

End Sub
---------------------------------------------------------
をすると、
Selection.AutoFill Destination:=Range("b1:b" & 最終行), Type:=xlFillDefault
の部分で、
[実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラー]
になってしまいます。

原因と対策を教えてください。ご回答よろしくお願いします。

投稿日時 - 2012-04-16 22:33:07

QNo.7425036

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

こんばんは!
すでに適切な回答が出ていますので、余計なお世話かもしれませんが・・・

B2セル以降に数式を入れたい訳ですよね?
オートフィルではありませんけど、

Sub test()
Dim i As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(2, 2), Cells(i, 2)).Formula = "=ASC(A2)"
End Sub

こんな感じではどうでしょうか?m(_ _)m

投稿日時 - 2012-04-16 23:33:53

ANo.1

掲示された絵の通り、「B2を選択した状態」から開始して、「B1から最下行まで」オートフィルしたいのですか?

もしもホントにそれが正しい意図なのでしたら、マクロは次のようになります。
sub macro1()
 dim r as long
 r = range("A65536").end(xlup).row

 activecell.formular1c1 = "=ASC(RC[-1])"
 range(range("B1"), selection).autofill destination:=range("B1:B" & r)
end sub




それともオートフィルさせたい対象範囲の方が実は間違っているなら、
sub macro2()
 dim r as long
 r = range("A65536").end(xlup).row

 activecell.formular1c1 = "=ASC(RC[-1])"
 activecell.autofill destination:=range(activecell, cells(r, "B"))
end sub
のようになります。



その場合実際には、わざわざオートフィルを使わなくても
sub macro2()
 dim r as long
 r = range("A65536").end(xlup).row
 range(activecell, cells(r, "B")).formular1c1 = "=ASC(RC[-1])"
end sub

などのようにすれば出来ます。

投稿日時 - 2012-04-16 22:58:21

あなたにオススメの質問