Excel VBA 質問スレッド №1935 (未解決)

結合されたセル、範囲指定し、値クリア

投稿者 : 初心者     投稿日時 : 2024/06/18(Tue) 19:10:38     OS : 未指定     EXCEL : 未指定
すいません。教えてください。

行17.18 列G.H.Iが結合されたG17セルがあります。
次は、行19.20 列G.H.Iが結合されたG19セルがあります。
同じように結合されたセルがG101(行99.100 列G.H.I)まであります。
したいことは、この結合されたセルG17セル~G101セルまでを範囲指定して、セルの値を一括削除したいです。
初心者が作成した下記コードではだめでした。
Sheets("表").Range("G17:G101").ClearContents
お手数ですがよろしくお願いします。

スポンサーリンク
[返信 1] Re : 結合されたセル、範囲指定し、値クリア
投稿者 : てらてら     投稿日時 : 2024/06/18(Tue) 19:29:14
こんにちは。

>したいことは、この結合されたセルG17セル~G101セルまでを範囲指定して、セルの値を一括削除したいです。

ClearContentsではなく、値の削除だけで良いなら以下のように書けます。

Sheets("表").Range("G17:G101") = ""

[返信 2] Re : 結合されたセル、範囲指定し、値クリア
投稿者 : てらてら     投稿日時 : 2024/06/18(Tue) 20:38:48
こんなのもあるみたい。

Sub test()
    Dim i As Long
    For i = 17 To 101
        Sheets("表").Range(Cells(i, "G").Address).MergeArea.ClearContents
    Next i
End Sub

ただ、Sheets("表").Range("G17:G101").MergeArea.ClearContents はコケる。

[返信 3] Re : 結合されたセル、範囲指定し、値クリア
投稿者 : 気分     投稿日時 : 2024/06/19(Wed) 00:18:24
>Sheets("表").Range(Cells(i, "G").Address)

いちいちRangeのアドレスを使う意味がある?

[返信 4] Re : 結合されたセル、範囲指定し、値クリア
投稿者 : 気分     投稿日時 : 2024/06/19(Wed) 00:22:30
ああ正確にはこうか

Cellsアドレスを使う意味がある?

Sheets("表").Cells(i, "G").MergeArea

[返信 5] Re : 結合されたセル、範囲指定し、値クリア
投稿者 : てらてら     投稿日時 : 2024/06/19(Wed) 18:14:50
>Sheets("表").Cells(i, "G").MergeArea

「プロパティの使い方が不正です。」とエラーが出ますが正確なコードと言えるのでしょうか?

>Cellsアドレスを使う意味がある?

ありますよ。意図して書いていますから。

[返信 6] Re : 結合されたセル、範囲指定し、値クリア
投稿者 : 気分     投稿日時 : 2024/06/19(Wed) 18:46:52
>「プロパティの使い方が不正です。」とエラーが出ますが正確なコードと言えるのでしょうか?

そら MergeArea 以降書いてないし、それくらい自分で判断できんの?

[返信 7] Re : 結合されたセル、範囲指定し、値クリア
投稿者 : てらてら     投稿日時 : 2024/06/20(Thu) 20:36:37

論点がズレたので。 >ALL

 まず、以下のコードはどれも同じように動作します。
 違いは、セルの指定方法だけです。
 2番目の test_a() が最も優れていると考えるのであれば、それを選択すれば良いだけなのですが、
 色々な書き方ができるのでやりたい事に含みを持たす事もできます。

 自分の書き方と違うからといって「意味がない」と考えるのは早計と言えるでしょう。
 
Sub test()
    Dim i As Long
    For i = 17 To 101
        Sheets("表").Range(Cells(i, "G").Address).MergeArea.ClearContents
    Next i
End Sub

Sub test_a()
    Dim i As Long
    For i = 17 To 101
        Sheets("表").Cells(i, "G").MergeArea.ClearContents
    Next i
End Sub

Sub test_b()
    Dim i As Long
    For i = 1 To 85
        Sheets("表").Range("G17").Cells(i).MergeArea.ClearContents
    Next i
End Sub

Sub test_c()
    Dim i As Long
    For i = 0 To 84
        Sheets("表").Range("G17").Offset(i, 0).MergeArea.ClearContents
    Next i
End Sub

Sub test_d()
    Dim i As Long
    For i = 17 To 101
        Sheets("表").Range("G" & i).MergeArea.ClearContents
    Next i
End Sub

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-02 23:55:45 )
タイトルとURLをコピーしました