- ベストアンサー
エクセルのマクロ
Sub test() x = Selection.Row y = Selection.Column z = Selection.Columns.count Range(Cells(x, y), Cells(x, y + z - 2)).Select Selection.ClearContents End Sub 上記マクロは、同一行の連続するセルを二つ以上選択状態にして実行すると、範囲内の最も右にあるセルの値のみが残って他のセルの値は全て消去されます。 上記マクロを、複数のセレクションに対して対応できるようにするには、どうすればいいでしょうか? 例えば、c1~f1、d3~h3、e10~g10を選択して実行すると、f1とh3とg10の値のみ残って他の値は消えるということです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 こんな感じでいかがでしょうか。 Sub test() Dim myRange For Each myRange In Selection.Areas If myRange.Columns.Count > 1 Then myRange.Resize(, myRange.Columns.Count - 1).ClearContents End If Next End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() Dim cl As Range Set m = Selection(1) For Each cl In Selection If m.Row = cl.Row Then Range(m.Address).Value = "" Else End If Set m = cl Next End Sub CTRLキーを使ってセルを指定する。 その場合飛び飛び行をも指定する。 そして実行する。 データ aa sd ss 2 23 23 11 234 22 63 結果 == sd == == 23 == == == 22 63 (=は、OKWAVE回答画面で左に寄ってしまうことの防止のため入れたもの、実際は空白)
お礼
ありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
もしその用途が、表の中でタイトルや関数式は残して入力した数値だけ消したいとかなら、SpecialCellsが使えます。 下記の例は選択した範囲内の数値だけを消します。 Sub Test() On Error Resume Next Selection.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents End Sub
お礼
ありがとうございました。
お礼
ありがとうございました。