• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBAで)

Excel VBA初心者のためのセル削除の問題

このQ&Aのポイント
  • Excel VBAを使ってセルの削除を行う際に問題が発生しています。特定の条件を満たすセルを削除するために、特殊なセルを選択し、削除操作を行っていますが、空白のセルを条件として指定した場合にエラーが発生します。これはrangeの指定方法が間違っている可能性があります。
  • また、選択範囲を指定しない場合、すべての行が削除されてしまうため、注意が必要です。これについても問題解決には至っていません。
  • Excel VBAの初心者であるため、この問題については調査を行いましたが解決策が見つかっていません。解決方法やご教授いただける方がいらっしゃいましたら、お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

考えてくださいとは言いましたが,追加の質問をしてくださいと言ったつもりはなかったのですけどね。余計なことを書いてしまったようです。 作成例: sub macro3()  if selection.count = 1 then exit sub  on error resume next  selection.specialcells(xlcelltypeblanks).delete shift:=xlshiftup exit sub 追加ご質問に書かれた新しいマクロについてのご相談は,ダメな状況についての具体的なご説明をもう一度キチンと添えて,別のご相談として投稿し解決してください。

kyon0512
質問者

お礼

ありがとうございます。 成る程、こうすれば良いのですね。 よけいなことではないですよ、勉強になりました。 お世話になりました。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

specialcellsでselectionの範囲に指定の条件のセルが無いと,必ずエラーになります。 回避策1:別の方法で検査する sub macro1()  if application.counta(selection) = selection.count then   msgbox "全て埋まっています"   exit sub  end if  selection.specialcells(xlcelltypeblanks).delete shift:=xlshiftup end sub 回避策2:変数を使うことを憶える sub macro2()  dim h as range  on error resume next  set h = selection.specialcells(xlcelltypeblanks)  if h is nothing then   msgbox "空のセルはありません"   exit sub  end if  h.delete shift:=xlshiftup end sub #別の注意 ご質問の本題ではありませんが,specialcellsは「範囲ではなく一個のセルを選んでいる」時に,動作があなたの意図しているのとは違います。 練習用に sub macro3() selection.specialcells(xlcelltypeblanks).select end sub とだけ書いたマクロを用意してよく実験して動作を確かめ,必要に応じてまた工夫を考えてみてください。

kyon0512
質問者

お礼

解答ありがとうございます。 specialcellsでselectionの範囲に指定の条件のセルが無いと,必ずエラーになります。 よくわかりました。 それで気が付いたのですが、これでは範囲指定していなくても全ての空白が削除になります。 それで見よう見まねでやってみました Sub Ksakujyo() Dim ObjRange As Range On Error Resume Next Set ObjRange = Application.InputBox("削除範囲を選択して下さい。", "印刷範囲", Type:=8) On Error GoTo 0 If ObjRange Is Nothing Then MsgBox "キャンセルされました。" Exit Sub End If With ActiveSheet If Application.CountA(Selection) = Selection.Count Then MsgBox "全て埋まっています" Exit Sub End If Selection.SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp End With End Sub が、駄目です、これでも範囲指定していないところまで削除になります。 ご教授よろしくおねがいします。

回答No.1

どういう状態のワークシートをどのような結果に持っていきたいのか質問内容からうまく読み取れません。 もう少し詳しく説明をしてもらえますか。 また、If Range is Nothing Then~End Ifをどこに挟みこんだのかも明示してください。 出来ればコード実行前とコード実行後のワークシートの状態を手作業で再現してハードコピー取って貼り付けて頂けると分かりやすいです。

kyon0512
質問者

お礼

解答ありがとうございます。 単純に空白セルを削除したいです。 まずマクロの記録です Sub Ksakujyo() Selection.SpecialCells(xlCellTypeBlanks).Select Selection.Delete Shift:=xlUp End Sub Sub Ksakujyo() Selection.SpecialCells(xlCellTypeBlanks).Select If Selection.Areas Is nothig Then MsgBox "対象が空白です" End If   Selection.Delete Shift:=xlUp End Sub としますがRangeをSelection.Areas とかにしてもだめみたいですが 宜しくお願いします。

関連するQ&A