Excel VBA 質問スレッド №2095 (解決済)

離れたセルに削除指示を出す

投稿者 : VBA初心者     投稿日時 : 2025/03/13(Thu) 15:06:39     OS : 未指定     EXCEL : 未指定
超初心者です。教えていただきたいことがあります。
D列には日付が入力されている状態なのですが、A列のセルに『設置』という文字があった行のみ、D列の日付を消して空白の状態にしたいのですが、
どのように組めばそういった指示が出せるのでしょうか?
A列には『設置』のほかに空白と『引揚』が入力されているセルがあります。
D列にはすべて日付が入力されている状態です。
どなたか教えてくれる方がいたらと思いこちらに投稿させていただきました。
よろしくお願いします。

スポンサーリンク
[返信 1] Re : 離れたセルに削除指示を出す
投稿者 : さんこう     投稿日時 : 2025/03/13(Thu) 17:18:19
雑なサンプルです。

参考になれば。

Sub Test()
    For r = 1 To 100
        If Cells(r, "A") = "設置" Then Cells(r, "D") = "消す"
    Next
End Sub

[返信 2] Re : 離れたセルに削除指示を出す
投稿者 : てらてら     投稿日時 : 2025/03/13(Thu) 21:16:00
こんにちは。

超初心者という事であれば、変数の宣言部分は省略しない方が良いでしょう。
  Dim i As Long   i を整数の変数とします。

For文は、iを1から100まで繰り返します。100は適当に大きい数値を置いただけです。
実際には最終行がベターですが、A列に値がない場合はIf文は実行されないので適当に大きい数値にしてもOKです。

  Cells(i, "D") = ""  の部分は、「長さの無い文字列」(=空白)を代入しています。
  Cells(i, "D").ClearContents  とも書けます。こちらは値をクリアするイメージです。

プログラムの流れは、For文で行を繰返していき、もし(If)A列に「設置」があれば、D列の値を空白にするという感じです。

For文とIf文の内部では字下げをすると幸福が訪れるそうなので、私はそうするようにしています。

Sub macro()
    Dim i As Long
    
    For i = 1 To 100        '100の部分は最終行に変更
        If Cells(i, "A") = "設置" Then
            Cells(i, "D") = ""
        End If
    Next i
End Sub

[返信 3] Re : 離れたセルに削除指示を出す
投稿者 : VBA初心者     投稿日時 : 2025/03/14(Fri) 09:40:31
返信ありがとうございます。
問題も解決しましたし、解説もいただきまして勉強になりました。
とても助かりました、ありがとうございました。

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

ステータス  :

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




( 処理日時 : 2025-09-14 15:55:54 )
タイトルとURLをコピーしました