• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メッセージボックス内の予定の表示方法について)

メッセージボックス内の予定の表示方法について

このQ&Aのポイント
  • Excel 2007を使っており、メッセージボックスに今日の予定をVBAで表示させたいのですが、うまくできません。
  • 毎日処理するエクセルファイルがあるため、そのファイルを開くと今日の予定をメッセージボックスで表示し、本日の予定がない場合は「本日の予定はありません」と表示されます。
  • しかし、同じ日付が2つ以上ある場合には一番上の予定しか表示されず、また、今日の日付がシート1にない場合にはエラーが発生します。

質問者が選んだベストアンサー

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

>一番上のものしか表示されません If RG = Date Then Exit For 日付が見つかった時点で終了しています。 >シート1にないとエラーになります。 RGが見つからないときの処理が抜けています。 方法はいろいろあるかと思いますが、Findを使って検索します。 また順番にメッセージボックスとのことですが、 処理が煩雑になりそうなので同時出力としました。 (複数検索ロジックは変わらないので理解できれば 順番に出力もすぐできると思います。) ---- Sub yotei() Dim rngFound As Range Dim rngFirst As Range Dim strMsg As String Set rngFound = Worksheets("Sheet1").Cells.Find(What:=Date) If rngFound Is Nothing Then MsgBox "本日の予定なし" Exit Sub Else '最初のセルを保存 Set rngFirst = rngFound strMsg = rngFound.Offset(, 1).Value End If Do Set rngFound = Worksheets("Sheet1").Cells.FindNext(rngFound) If rngFound.Address = rngFirst.Address Then '最初に見つかったセルと同じ時終了 Exit Do Else strMsg = strMsg & vbCrLf & rngFound.Offset(, 1).Value End If Loop MsgBox strMsg End Sub

bike5050
質問者

お礼

ありがとうございました。 正常に動作して、とても助かりました。 今後とも、よろしくお願いします。

その他の回答 (1)

  • TAKA_R
  • ベストアンサー率32% (26/79)
回答No.2

こんな感じでしょうか(動作確認していません) ちょっと1段目が下がってしまいますけどね。 Sub yotei() Dim RG As Range Dim ms As String For Each RG In Range("A:A") If RG.Value = Date Then ms=ms & vbCrLf &RG.Offset(, 1).Value Next RG if not ms="" then MsgBox ms else MsgBox "本日の予定なし" end if End Sub

bike5050
質問者

お礼

ありがとうございます。 動作させたところ、”NEXTに対するForがありません”のエラーが出て 動きませんでした。 エラーとなったことについて、自分で考えて、勉強したいと思います。 今後とも、よろしくお願いします。

関連するQ&A