500連発の読者さん用フォームを使って送信されてきた質問ですが、質問対象のマクロ番号など、アンケートにご記入がありませんでした。
「マクロを使うのは初めて」とのこと、きっと、読者の方かと思いますので、お答えしておきます。
質問の例示では A1:A5の範囲の下の方の A4:A5セルが空白ですから、そのままにしておいても行削除しても、結果は同じかとも思います。しかし左図のように、A1:A5が 「罫線などでレイアウトされた表」であるならば、行削除する意味が出てきます。
マクロコードは、次のとおり簡単です。
Rows("4:5").Delete Shift:=xlUp
行削除については 「指定した行を削除するには?」のページも参考にしてください。
「行数はその時々によって異なります」ということで、実務においては、むしろ当然のことですが、マクロには工夫が必要になります。
具体的には上記コードの "4:5" の部分を変数で指定する方法に変えます。例えば次のように書きます。
Rows(削除範囲).Delete Shift:=xlUp
この変数「削除範囲」には、削除したい行番号をセットしなければなりません。そのため、まず、空白行の範囲を選択する必要があります。マクロコードは、Macroのページの 1)各種選択方法の「シート範囲に関するいろいろな選択方法」の中にある次のコードが使えます。
Range("A1").SpecialCells(xlBlanks).Select '空白セルを選択
こうして選択できた空白行の範囲の上端と下端の行番号を、変数「削除範囲」に取得するコードは次のとおりです。
With Selection '選択された範囲の
上 = .Row '上端行番号を取得する
行数 = .Rows.Count '行数を取得する
End With
下 = 上 + 行数 - 1 '下端行番号を算出する
削除範囲 = 上 & ":" & 下 '削除する範囲を変数にセットする
以上を整理すると、次のようになります。
'=========================================================================================
Sub 指定した範囲内の空白のセルを行単位で削除する()
1 Worksheets("Sheet1").Activate 'ワークシート"Sheet1"をアクティブにする
2 Range("A1").SpecialCells(xlCellTypeBlanks).Select 'A1セルを基点に空白セルを選択する
3 With Selection '選択された範囲の
4 上 = .Row '上端行番号を取得する
5 行数 = .Rows.Count '行数を取得する
6 End With
7 下 = 上 + 行数 - 1 '下端行番号を算出する
8 削除範囲 = 上 & ":" & 下 '削除する範囲を変数にセットする
9 Rows(削除範囲).Delete Shift:=xlUp '変数「削除範囲」で指定された行を削除する
End Sub
'=========================================================================================
・1行目のコードは、2から6行目までのコードがアクティブシートに作用するので必要です。
・2行目のコードに "A1" とありますが、質問では指定範囲が A1:A5 つまり A列となっているためです。A列を全く使わない方法でデザインされたワークシートの場合は注意が必要です。くわしく知りたければ、500連発第2弾の説明を参照してください。
・3から6行目までのコードは、2行目のコードに続けて書きます。その理由は、3行目の Withステートメントで指定したオブジェクト Selection が、2行目のコードで選択されたセル範囲だからです。
回答は以上で終わりです。
知りたいことを調べる方法
この「すぐマク」のホームページには、[Search]ページがあります。そのページは、キーワード(用語)を入力して[検索]ボタンをクリックすると、「すぐマク」の全ページのタイトルを検索して、ヒットした一覧を表示してくれます。その一覧の中で見たいタイトルをクリックすると、該当ページが表示されます。
例えば 「指定した範囲内の空白のセルを行単位で削除する事は可能ですか?」という質問のキーワードとしては、「範囲」、「空白」、「行」、「削除」などがありますので、[Search]ページにある右図のようなテキストボックスに、どれかを入力して[検索]ボタンをクリックしてみてください。
サンプルブックのダウンロードは ここをクリック (YNxv940_Delete.xls 48KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
|