• ベストアンサー

マクロ A列からD列のセル内の字を削除

マクロを作っています。選択した行のA列からE列のセル内の字を削除したいのですが、指定の仕方がわかりません。行はその都度変更します。よろしくお願いします。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

こんなことか。 i = Selection.Row Range("A" & i, "E" & i).ClearContents

kiyoritta
質問者

お礼

ありがとうございました。できました。シンプルでわかりやすいですね。ありがとうございます。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

サンプルを二つほど上げます。選択しているのがセルが連続していなくても大丈夫ですが、セル以外(シェイプなど)を選択するとエラーになります。 Sub Macro1() Dim r As Range  For Each r In Selection   Cells(r.Row, "A").Resize(1, 5).ClearContents  Next r End Sub Sub Macro2() Dim rng As Range  Set rng = Intersect(Range("A:E"), Selection.EntireRow)  If Not rng Is Nothing Then   rng.ClearContents  End If End Sub

kiyoritta
質問者

お礼

ありがとうございます。 レベルが高すぎてよくわかりませんが、これから回答者さんのような人を目指して頑張ります。ありがとうございます。

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

  こんにちは 「選択した行」の意味が、行番号(idx)なら Rows(idx).Resize(, 5) とか Cells(idx, 1).Resize(, 5) とか Range("A" & idx & ":E" & idx) とか Range("A:E " & idx & ":" & idx) とか 「選択した行」の意味が、(.Selectされた)Selectionなら Selection.Resize(, 5) とか Selection.Range("A1:E1") とか 「選択した行」の意味が、変数(Set rngX = Rows(idx)) なら rngX.Resize(, 5) とか rngX.Range("A1:E1") とか Intersect(rngX, Range("A:E")) 等々。 上のようなオブジェクトに対して 求めるメソッドが良くわかりませんが、 .ClearContents とか .Clear でしょうか? F列以右に有意なデータが無いなら、行全体をクリアでも あまり違いはないでしょうか もし .Delete だったら 適切なサイズにしておいた方が無難かなあ~と思います いっぱいあって迷うでしょうか? 取りあえず、一番簡単で、一番わかり易いのを選んで 使い続けて慣れるのが良いと思います。 範囲.Resize(行数, 列数)や Range("A:E 7:7") 「参照演算子の空白」 等は覚えておくと何かと便利ですよ。 Intersect(範囲, 範囲) は、私の趣味じゃないけれど Range型の変数との、「交わる面」範囲を求める時は必須です ご質問を文字通り捉えた解釈だと Selection.Range("A1:E1").ClearContents が一番近いでしょうか 頑張ってください

kiyoritta
質問者

お礼

たくさんの回答をありがとうございます。質問がよくわからなくて申し訳ありません。最後のパターンでやりました。ありがとうございます。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

列全体をクリアしてはいかがでしょう? そうすれば、行の増減は関係なくなります。

kiyoritta
質問者

お礼

ありがとうございます。最終列は合計欄なので残したいのです。 Range(”A"&gyo,"H"&gyo).Clearcontents という形でできました。 お世話になりました。

関連するQ&A