アプリ版:「スタンプのみでお礼する」機能のリリースについて

下のようなコードを見つけて勉強しています。
簡単な応用ができません・・・。
P1=今日の日付
G=訪問日
I=御礼の手紙を書いた日付
として、
訪問日が過ぎていて、御礼の手紙が未入力なら“超過があります”とメッセージと色で知らせるものですが、
下のような感じで
P1=今日の日付
I=御礼の手紙を書いた日付
K=返事が来た日付

御礼の手紙を書いた日付から20日が過ぎてもK列に返事が来た
日付が入力がないものには
・“返事がありません”とメッセージ
・薄い灰色に行を塗る

というようにしたいのですが、教えていただけないでしょうか。
自分では、+20という表現をどのように書いたらいいのかというとこ
ろで躓いてしまいました。
どうぞ宜しくお願いします。


Sub test ()
Dim SH As Worksheet
Dim i As Integer
Dim s As String
Set SH = Worksheets("表")
s = "超過はありません。"

i = 1
Do Until SH.Cells(i + 3, "A").Value = ""
If SH.Cells(i + 3, "G").Value < SH.Range("P1") And _
SH.Cells(i + 3, "I").Value = "" Then
SH.Cells(i + 3, "A").Resize(, 16).Interior.ColorIndex = 3
s = "超過があります。"
End If
i = i + 1
Loop
MsgBox s
End Sub

A 回答 (1件)

細かいところはさておいて


指定されたセルの20日後が判定できれば良いと解釈します

MsgBox DateAdd("d", 20, Now())

今日から20日後を表示します

コードに入れると
If SH.Range("P1") >= DateAdd("d", 20, SH.Cells(i + 3, "I")) Then

ですかね


勉強中との事なので、組み込んだコードを示すのは止めておきますが、代わりにウンチクをひとつ

大したことではないのですが、比較(Ifとか)を行うときは、比較演算子の左が元々有るもの(変わらない、どこから引き継いだ のような意味)
右が今回比較する物(変わる物、左より後に生成された、結果Trueになっていてもらいたい値 のような意味)とするのがお作法です

別にどっちに書いても同じ意味ですし、動作しますが、コーディングしてる人(特に最初の内)の動作イメージがしやすくなります
とは言え、同時に変わる場合もよくありますから、まぁ一応って事で^^;
    • good
    • 0
この回答へのお礼

ありがとうございました、うまくできました。アドバイスもいただき、役立ちました。今後とも宜しくお願いします。

お礼日時:2008/06/07 09:44

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