[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートフィルを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.