- ベストアンサー
VBAで指定範囲内の空白セルを左詰めで一括削除したいのですが
エクセルで作成した表中に測定結果を集約し、管理しております。 測定を行った際に得られる数値を項目毎に対象列のセルへ集積しているのですが、 測定を行っていない項目のセルは空白となるため、空白セルを左詰めで一括削除したく望んでおります。 下記のようにマクロの記録を使用してコードを取得し、実行してみたのですが、エラーになってしまいます。 Private Sub CommandButton1_Click() Sheets("A").Select Range("B:AH").Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.Delete Shift:=xlToLeft Range("A1").Select End Sub 対象範囲(列)はB列からAH列としておりますが、測定項目が増えると記載列も増えますので、 範囲を柔軟に変更出来るような方法で希望しております。 お手数ですがご教授いただけませんでしょうか? 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
提示されたコードでは、実行エラー(RangeクラスのSelectメソッドが失敗しました)に なりますね。 Private Sub CommandButton1_Click() Sheets("A").Range("B:AH").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End Sub とか? >対象範囲(列)はB列からAH列としておりますが、測定項目が増えると記載列も増えますので、 >範囲を柔軟に変更出来るような方法で希望しております。 求める結果がわからなかったです。
その他の回答 (3)
- fujillin
- ベストアンサー率61% (1594/2576)
意味が違ってるかも知れませんが… 先に処理したい範囲を選択しておいて、その範囲に対して同様の処理(左詰め)を行いたいのであれば、 Private Sub CommandButton1_Click() Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End Sub みたいにすればよいのでは? 選択したものが、セル範囲でない場合はエラーになるので、最初にそのチェックを入れておいたほうがよいですけど。 違っていたら、無視してください。
お礼
ご回答いただいたコードの前部(Selection)を Sheets("A").Range("B:AH") に変更して解決致しました。 ご教授いただき、ありがとうございました。
- hige_082
- ベストアンサー率50% (379/747)
提示された、コードでエラーでませんけど? もう少し詳しく説明して
お礼
”RangeクラスのSelectメソッドが失敗しました”と表示されておりましたが、解決致しました。 hige_082様には毎度ご返答いただき、とても感謝しております。 ありがとうございました。
- kenpon24
- ベストアンサー率64% (66/102)
どのようなエラーメッセージが表示されますか?
お礼
”RangeクラスのSelectメソッドが失敗しました”と表示されておりましたが、解決致しました。 お気に留めていただき、心より感謝しております。 ありがとうございました。
お礼
希望通りの動作が得られました。 とても感謝しております。ありがとうございました。 >求める結果がわからなかったです。 大変申し訳ありませんでした。 Range("B:AH")の変更で対応することを望んでおりました。