• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBAで空白削除のマクロを作りましたが)

EXCEL VBAで空白削除のマクロを作成しても削除されない問題

このQ&Aのポイント
  • EXCEL VBAで空白削除のマクロを作成しましたが、削除が正常に行われない問題が発生しています。
  • セルの選択範囲や削除方法に問題がある可能性があります。
  • 初心者ですので、どなたか修正方法を教えていただけないでしょうか。

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

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

こんなカンジですかね? sub macro3()  dim Target as range  on error resume next  set target = application.inputbox("目的のセル範囲を選んでください", type:=8)  if target is nothing then   msgbox "キャンセルされました"   exit sub  end if  if target.count = 1 then   msgbox "複数個のセルを選んでください"   exit sub  end if  target.specialcells(xlcelltypeblanks).delete shift:=xlshiftup end sub

kyon0512
質問者

お礼

ありがとうございます。 こうやるんですね。 さすがですね、でも自分ではまだまだ出来ないですが。 ありがとうございました。

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

NO2です。 >キャンセルしたときにデバッグでオブジェクトが必要ですと、出ますが?  ⇒最初の「On Error Resume Next」があれば以下の定義は不要です。   因みに「End Sub」の直前の「Exit Sub」はMsgbox直後に置いた方がよいのでは   ないでしょうか。

kyon0512
質問者

お礼

わかりました。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

ANo.1です。 > つまりIf Selection.Count = 1 Then Exit Sub > のExit Subは入らないってことですね。 違います。 削らないで下さい、必要な箇所です。 私が回答したのは、ただ単に If Selection.Count = 1 Then Exit Sub の前に ObjRange.Select を一行追加して、InputBoxで指定した範囲を選択しなさいと言う意味です。

kyon0512
質問者

お礼

わかりました。 ありがとうございます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

取り敢えず、「On Error GoTo 0」と2個目の「On Error Resume Next」は不要です。 SelectionはObjRangeではないでしょうか。

kyon0512
質問者

お礼

解答ありがとうございます。 しかし、これがないとキャンセルしたときにデバッグでオブジェクトが必要ですと、出ますが?

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

[F8]でステップ実行して見ましたか? If Selection.Count = 1 Then Exit Sub の行でExitしていると思います。 Application.InputBoxで削除範囲を指定していますが、その範囲が「Select」された訳では無いからです。 この時点でSelectされているのはマクロ起動前にアクティブなセルです。 If Selection.Count = 1 Then Exit Sub の前に ObjRange.Select を一行追加して指定した削除範囲を「Select」しましょう。

kyon0512
質問者

お礼

解答ありがとうございます。 つまりIf Selection.Count = 1 Then Exit Sub のExit Subは入らないってことですね。 それでObjRange.Selectを追加して Sub Ksakujyo() Dim ObjRange As Range Set ObjRange = Application.InputBox("削除範囲を選択して下さい。", "印刷範囲", Type:=8) If ObjRange Is Nothing Then MsgBox "キャンセルされました。" End If ObjRange.Select If Selection.Count = 1 Then On Error Resume Next Selection.SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp End If End Sub となりましたが、これでも削除が実行されません。 ???うーーん、わからない。 宜しくお願いします。

kyon0512
質問者

補足

あー、成る程、 Application.InputBoxで削除範囲を指定していますが、その範囲が「Select」された訳では無いからです。 この時点でSelectされているのはマクロ起動前にアクティブなセルです。 一つのセルでなく、3つ位セルを選択した状態でマクロを実行すると良くわかりますね。 そういうことだったんですね。 しかし、[F8]でステップ実行して見ると Selection.SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp に黄色の帯がかからず次のEnd Ifまで飛び越えます。 実行されてないってことですよね? でここからどうすればよいでしょうか? 宜しくお願いします。

関連するQ&A