Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


39015 / 76736 ←次へ | 前へ→

【42842】Re:エクセルで作業中MsgBox表示
発言  ichinose  - 06/9/23(土) 10:06 -

引用なし
パスワード
   ▼まーくん さん:
おはようございます。

最近は、歳のせいか週末は寝るのが早くて・・・。

>時間変更の場合を聞きたいのですが(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

とすれば、時刻やメッセージに変更や追加があっても
シートにデータを変更・追加するだけでコードの変更が要りません。

試してみてください。
0 hits

【42838】エクセルで作業中MsgBox表示 まーくん 06/9/23(土) 1:45 質問
【42842】Re:エクセルで作業中MsgBox表示 ichinose 06/9/23(土) 10:06 発言
【42848】Re:エクセルで作業中MsgBox表示 まーくん 06/9/23(土) 11:21 発言
【42847】Re:エクセルで作業中MsgBox表示 ハチ 06/9/23(土) 11:18 発言
【42849】Re:エクセルで作業中MsgBox表示 まーくん 06/9/23(土) 11:27 発言
【42860】Re:エクセルで作業中MsgBox表示 まーくん 06/9/23(土) 14:59 発言
【42862】Re:エクセルで作業中MsgBox表示 まーくん 06/9/23(土) 15:41 発言
【42863】Re:エクセルで作業中MsgBox表示 Kein 06/9/23(土) 15:59 回答
【42867】Re:エクセルで作業中MsgBox表示 まーくん 06/9/23(土) 16:33 発言
【42870】Re:エクセルで作業中MsgBox表示 Kein 06/9/23(土) 17:24 発言
【42872】Re:エクセルで作業中MsgBox表示 まーくん 06/9/24(日) 1:34 お礼

39015 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free