2018年2月21日水曜日

選択範囲の空白行を埋めるコード

こんにちは、Shigeです。
今回は自分で選択した範囲に空白行がある場合、空白行の上のセルの値を入れるコードです。
お客様が入力している出納帳で日付部分が同じ日の場合、空白にしている事が多々あるので、それを自動的に埋めるために作成したコードです。
  1. Sub Fill()
  2. Dim SetArea As Range, sel As Range
  3. On Error Resume Next
  4.     Set SetArea = Application.InputBox("空白を埋める範囲を選択してください", _
  5.                                         "範囲選択", Type:=8)
  6.     If SetArea Is Nothing Then Exit Sub
  7.     
  8.     For Each sel In SetArea
  9.         If IsEmpty(sel) Then sel.Value = sel.Offset(-1, 0)
  10.     Next sel
  11. End Sub
これで範囲を選択すると空白が埋まります。
                    3行目 On Error Resume Next エラーを無視するコード。
                    4行目でインプットボックスを表示して範囲を選択しているのですが、その時に何も選択しない時やキャンセルした場合にこの部分で処理が止まってしまうため、エラーを無視するというコードを入れています。
                    条件分岐させればこれを入れなくても済みますが、6行目でマクロ自体を閉じてしまうため、1行だけ書けば済むOn Errorを使ってます。

                    8~10行目 選択した範囲内をFor Eachで回して、空白だった場合には上のセルの値を設定してます。
                    数式をコピーしたい場合は.Valueを.FomulaR1C1に変更すればいける...はず!

                    では、また。

                    0 件のコメント:

                    コメントを投稿

                    ブックの全シートをまとめるコード

                    こんにちは、Shigeです。 今回は、ブックに複数あるシートのデータを「まとめ」のシートにコピペするコードです。 Sub Matome()   Dim i As Integer   Dim lRow As Long, lCol As Long, lRow2 As Lo...