[[20250313155031]] 『日付の自動入力』(aser) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『日付の自動入力』(aser)

以前質問させていただいた内容に追加になります。

現在C列に計と入力された場合A列に日付が自動入力されるマクロになっているのですが、B列についても同様に日付の自動入力を追加したいのですがうまくいきません。C列との違いは何かしらの数字が入力されたら日付を入力したいのです。どうすればいいでしょうか。

Private Sub Worksheet_Change(ByVal Target As Range)

     If Intersect(Target, Columns("C")) Is Nothing Then Exit Sub
     If Target = "計" Then
         Target.Offset(0, 1).Resize(1, 2).Select
         Application.EnableEvents = False
         Application.CommandBars.ExecuteMso "AutoSum"
         Application.EnableEvents = True
     End If

     If Intersect(Target, Columns("C")) Is Nothing Then Exit Sub
     If Target = "計" Then
     Application.EnableEvents = False
     Target.Offset(, -2).Value = Now
     Application.EnableEvents = True
     End If

     If Target.Column <> 2 Then Exit Sub ←これ以下がネットで調べて追加したものです
     Application.EnableEvents = False
     Target.Offset(, -1).Value = Now
     Application.EnableEvents = True

End Sub

< 使用 Excel:Excel2016、使用 OS:unknown >


 Private Sub Worksheet_Change(ByVal Target As Range)

     If Intersect(Target, Columns("C")) Is Nothing Then Exit Sub   ← C列以外が変更だったら、即終了します。

(tkit) 2025/03/13(木) 16:41:19


[[20250303155600]]のコードに追加されているのですね。

 既に指摘いただいているように、
 Changeイベントプロシージャ内で複数のことをしようとする場合、
 Exit Subで抜ける方式は相性が悪いです。

 If TargetがC列なら
    If Targetが"計"なら
        オートサムを入れる
        A列に日付を入れる
    End If    
 ElseIf TargetがB列なら
    A列に日付を入れる
 End If
 のような条件分岐を使うとよいでしょう。

(xyz) 2025/03/13(木) 19:09:52


tkit 様
ありがとうございます。そのコードのそういった意味合いがあったのですね。
(aser) 2025/03/14(金) 08:51:38

xyz 様

その条件分岐を行った場合のコードを教えていただけますと幸いです。
(aser) 2025/03/14(金) 08:52:28


 いえいえ、下記の疑似コードは殆どコードに近いですよ。Then とかが書いてないだけです。

 If TargetがC列なら
    If Targetが"計"なら
        オートサムを入れる
        A列に日付を入れる
    End If    
 ElseIf TargetがB列なら
    A列に日付を入れる
 End If

 "TargetがC列なら”というのは、あなたが既に Target.Column <> 2などと使っているのですから
 Target.Column = 3 とすればいいわけです。
 "オートサムを入れる"とかは、条件分岐には無関係で、今のものがそのまま使えます。
 このほうが条件分岐の構造がより分かりやすくなると思い、わざわざ標語的に
 書いているのです。

 これくらいはご自分でトライされるべきだと思います。
 そのことであなたの理解がさらに確実なものなるはずです。 
 頑張ってください。

(xyz) 2025/03/14(金) 09:45:00


If...Then...Else ステートメント
などの制御構造は基本的なステートメントだと思います。
https://excel-ubara.com/excelvba1/EXCELVBA320.html
https://excel-ubara.com/excelvba1/EXCELVBA321.html
などが参考になると思います。

このほか 別の方法として、Select Case ステートメントも使えると思います。
https://excel-ubara.com/excelvba1/EXCELVBA322.html

いずれもよく使われる基本的な文法事項です。
(xyz) 2025/03/14(金) 10:27:40


xyz 様
ありがとうございます!
トライ&エラーでなんとか形にできました!
またよろしくお願いいたします!
(aser) 2025/03/14(金) 13:14:09

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.