[[20050603141329]] 『オートフィルをVBAで書く場合』(にいな) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートフィルをVBAで書く場合』(にいな)
 いつもお世話になっています。
 計算式を入れたセルから下方向にオートフィルを使うのをマクロの記録でVBAにしてから
 いじってるのですが、下のような場合にマクロを実行するとエラーとなってしまいます。

 ・セルA2には 1 を入力
 ・するA3に計算式として、商品B2とB3が同じものではなかったら、A2の数字に1加算
 ・A3から下にはB列の最終行までオートフィルを実行
       A     B     C
 1   番号  商品   単価
 2     1   みかん  100
 3     2   りんご  200
 4
 5

 自分のVBAのオートフィル部分
   Dim LastR As Long
    LastR = Cells(Application.Rows.Count, "B").End(xlUp).Row
    (略)
    Selection.AutoFill Destination:=Range("A3:A" & LastR), Type:=xlFillDefault
 4行目にデータが無い時(B4が空白)、エラーとなる。
 セルB4が空白ではない場合だけオートフィルを実行させるにはどう記述したらいいのでしょうか。教えてください。
 Windows2000、Office2000

 IF文でB4が空白じゃない時とかLastRが3より大きい時とかすればどうでしょう。
(kenbou)


 A2:A3を選択して、右下角をポインタが+になった所をWクリックすれば、
 B1を選択して Ctrl + ↓ で、選択された行までフィルされますけど.....。

 マクロで行いたいんですよね?
 不具合等のことをあまり考えなければ
 >セルB4が空白ではない場合
 If range("B4").Value = "" Then Exit sub
 と初めの方に書いておけば、B4が空白の時に何もしないでマクロは終わりに抜けます。
                                         BJ

 kenbouさん、BJさん、ありがとうございます。
 VBAの中で書きたいのでBJさんの回答を使いたいのですが、
 オートフィルの部分はマクロの中の一部分であって、そのオートフィルをやらない場合も
 その後の処理を続けなければいけません。
 オートフィルを処理の最後にすることが出来ないので、その部分だけを飛ばすという方法を
 教えていただけないでしょうか。 (にいな)


 こうやってIF分の中にオートフィルを入れれば良いです。
 If range("B4").Value <> "" Then
    ここでフィル。
 end if

 おまけの参考程度ですが、使用方意味などは自分で確かめてください。
 If Range("B1").End(xlDown).Row <> Range("B65536").End(xlUp).Row Or _
    Range("B1").Offset(1) = "" And Range("B1").Offset(2) <> "" Then
    MsgBox "途中に空白セルあり"
 Else
    MsgBox "途中に空白セルなし"
 End If
                  BJ

 BJさん、ありがとうございました。
 参考に頂いた部分は頑張って確かめてみます。 (にいな)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.