- ベストアンサー
マクロ A列からD列のセル内の字を削除
マクロを作っています。選択した行のA列からE列のセル内の字を削除したいのですが、指定の仕方がわかりません。行はその都度変更します。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんなことか。 i = Selection.Row Range("A" & i, "E" & i).ClearContents
その他の回答 (3)
- zap35
- ベストアンサー率44% (1383/3079)
サンプルを二つほど上げます。選択しているのがセルが連続していなくても大丈夫ですが、セル以外(シェイプなど)を選択するとエラーになります。 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
お礼
ありがとうございます。 レベルが高すぎてよくわかりませんが、これから回答者さんのような人を目指して頑張ります。ありがとうございます。
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは 「選択した行」の意味が、行番号(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 が一番近いでしょうか 頑張ってください
お礼
たくさんの回答をありがとうございます。質問がよくわからなくて申し訳ありません。最後のパターンでやりました。ありがとうございます。
- marbin
- ベストアンサー率27% (636/2290)
列全体をクリアしてはいかがでしょう? そうすれば、行の増減は関係なくなります。
お礼
ありがとうございます。最終列は合計欄なので残したいのです。 Range(”A"&gyo,"H"&gyo).Clearcontents という形でできました。 お世話になりました。
お礼
ありがとうございました。できました。シンプルでわかりやすいですね。ありがとうございます。