電子書籍の厳選無料作品が豊富!

作業ブックに下記のコードを設定してます、
例えば
日付D6<=日付F6
日付D6>日付F6
日付D10<=日付F10/の条件が揃た時にマクロ「増築3月31日以前図表示」が実行できるように設定しましたが、このコードではうまくマクロが実行されません。
解決方法を教えてください。
現状のコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim checkRanges As Variant
checkRanges = Array("D6", "D8", "D10")
Dim isTargetChange As Boolean
isTargetChange = False
Dim checkRange As Variant
For Each checkRange In checkRanges
If Not Intersect(Target, Range(checkRange)) Is Nothing Then
isTargetChange = True
Exit For
End If
Next
If Not isTargetChange Then Exit Sub
If Range("D6").Value <= CDate("F6") And _
Range("D8").Value > CDate("F8") And _
Range("D10").Value <= CDate("F10") Then
End If

Call 増築3月31日以前図表示
End Sub
以上となります。
よろしくお願いいたします。

質問者からの補足コメント

  • うーん・・・

    例えば
    D6:2025年3月31日 <= F6:2025年4月1日
    D8:2025年5月1日 > F8:2025年4月1日
    D10:2025年3月31日 <= F10:2025年4月1日
    日付をこのように設定した場合に、この設定のすべての条件が揃た時に
    マクロを実行できるコードを教えてください。
    よろしくお願いいたします。

      補足日時:2025/01/26 13:32
  • うーん・・・

    回答ありがとうございます。
    具体的にどのようなコードに設定すれば用でしょうか?
    教えていただけますか。
    よろしくお願いいたします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2025/01/26 15:39
  • うーん・・・

    回答ありがとうございます。
    具体的にどのようなコードを設定すると良いかを教えていただけますでしょうか。
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2025/01/26 15:41
  • うーん・・・

    ご連絡、ありがとうございます。
    申し訳ありません。
    質問に記載したコードは以前この質問で教えていただいたコードを
    少し変更したもので、私自身、内容が理解できておりません。
    もう少し、詳しく教えてください。
    宜しくお願い致します

    No.3の回答に寄せられた補足コメントです。 補足日時:2025/01/26 17:38

A 回答 (5件)

以下のようにしてください。



Private Sub Worksheet_Change(ByVal Target As Range)
Dim checkRanges As Variant
checkRanges = Array("D6", "D8", "D10")
Dim isTargetChange As Boolean
isTargetChange = False
Dim checkRange As Variant
For Each checkRange In checkRanges
If Not Intersect(Target, Range(checkRange)) Is Nothing Then
isTargetChange = True
Exit For
End If
Next
If Not isTargetChange Then Exit Sub
If Range("D6").Value <= Range("F6") And _
Range("D8").Value > Range("F8") And _
Range("D10").Value <= Range("F10") Then
Call 増築3月31日以前図表示
End If
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
詳しいコードまで教えていただきまして、ありがとうございます。
上手く出来ました。
感謝いたします。

お礼日時:2025/01/26 19:22

>内容が理解できておりません


わからないところを質問しないで「上手く出来ました」で終わっていると、いつまでたっても自分でマクロ書けませんよ。
    • good
    • 0

No1です。



>~~が実行できるように設定しましたが~
作成者ならわかるはずです。
No2様が丁寧な指摘もしてくださっています。


>具体的にどのようなコードに設定すれば用でしょうか?
例えば、No1の後半部分について言うなら、
 If Intersect(Target, Range("D6,D8,D10")) Is Nothing Then Exit Sub
とすることで、前後の10行ほどのコードは不要になります。
この回答への補足あり
    • good
    • 0

「条件が揃た時にマクロ「増築3月31日以前図表示」が実行」なら


If <条件> Then の後、End Ifより前に実行するものを書きます。
どういう風に処理が流れていくのか意識してください。
この回答への補足あり
    • good
    • 0

こんにちは



条件を判定しているのに、処理の分岐をしていないので、判定が無意味になっていませんか?


なお、ご質問には関係ありませんけれど・・
変更セルのチェックも、単純に
 Intersect(Target, Range("D6,D8,D10"))
を見れば同じことができるので、まわりくどいことをしなくても、ほぼ1センテンスですませられます。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A