| 
    
     |  | ▼まーくん さん: おはようございます。
 
 最近は、歳のせいか週末は寝るのが早くて・・・。
 
 >時間変更の場合を聞きたいのですが(420, 600, 1020, 1200)は
 >どういう意味ですかまた、Arrayの意味も?ヘルプだとHasArray、FormulaArray
 >CurrentArray、IsArrayただArrayというのは出てきませんが?
 
 ↑これについては、
 Array()は、配列を作成する関数です。
 中の420,600,・・・・は、時刻を分単位に換算した数値です。
 8:00------>420分
 10:00----->600分
 
 もっともこれは例題としてのコードだったので
 Array関数を使って配列を作成しましたが、この配列の数が多い場合や
 変更や追加が予想される場合は、このArray関数は使いません。
 だって、変更や追加があった場合、コードを直さなければならないですからね!!
 
 変更や追加が予想される場合は、データをコードの外に置きます。
 Excelには、シートという便利なデータ領域があるものね!!
 
 例えばアクティブシートのA列及びB列(書式は、共に標準)に
 以下のようなデータ配置します。
 
 A      B
 1     8:00     おはようございます
 2     10:00    休憩時間ですよ
 3     11:55    そろそろ昼食の時間です
 4     15:00    お茶の時間ですよ
 5     17:00    もうかえるよ
 6     20:00    まだ頑張ってるの
 
 
 標準モジュールに
 
 '========================================================
 Sub test()
 Dim rng As Range
 Dim ans As Variant
 Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp))
 ans = Application.Match(CDbl(Time), rng, 1)
 If IsError(ans) Then ans = rng.Row + rng.Rows.Count - 1
 MsgBox Range("b1").Cells(ans).Value
 End Sub
 
 とすれば、時刻やメッセージに変更や追加があっても
 シートにデータを変更・追加するだけでコードの変更が要りません。
 
 試してみてください。
 
 |  |