教えて!gooにおける不適切な投稿への対応について

VBAの知識が無いので本を脇に置きながら作業をしております。

図のような画面を作成しようとしておりますが、2つ質問があります。
(1)図右上のようにパソコンに設定されている時間を画面上に
 表示する方法を教えて下さい
(2)図右上に表示された時間を基にIF文の処理を行ないたい
 例えば、現在の時刻が13:00だったら、
 「12:00~14:00」、「14:00~16:00」、「16:00~18:00」
 の処理を行なう  としたいのですが、
 
 分からないのが、IF文で
 『現在時刻が12:00~14:00までの間だったら、処理Aを行なう』の
 命令文が分かりません。
 
 どのように作成すれば良いのか、お教え願います。

「IF文に時間(何時から何時まで)の条件文」の質問画像
gooドクター

A 回答 (3件)

通りがかりです。


>分からないのが、IF文で
> 『現在時刻が12:00~14:00までの間だったら、処理Aを行なう』の
> 命令文が分かりません。
この場合は
 Select Caseで分岐したほうが便利でしょう
Select Case Range("C1").Value
Case Is < TimeSerial(12, 0, 0)
MsgBox "処理A"
Case Is < TimeSerial(14, 0, 0)
MsgBox "処理b"
Case Is < TimeSerial(16, 0, 0)
MsgBox "処理c"
Case Is < TimeSerial(18, 0, 0)
MsgBox "処理d"
End Select
といった具合で考えてみてください。
    • good
    • 0

Sub test01()


Range("C1") = Time
Range("D1") = Hour(Time)
Range("E1") = Minute(Time)
Range("F1") = Second(Time)
End Sub
C1の表示形式は、別途設定すること(手作業・VBA)。
ーーー
>12:00~14:00までの間だったら、処理Aを行なう
セルの値を用いて比較する場合は
If Range(”A1")>Range("B1") Then
処理A
End If
のように出来るが、
1方を固定の数値(エクセルでは時刻シリアル値、このことを質問者は判ってないかも)は(時刻)リテラル値といい、TimeSerial(j時、分、秒)で定義する方法もあるが、#を使って
Sub test03()
If Range("C1") = #12:05:35 PM# Then
MsgBox "aaa"
End If
End Sub
でできる。
http://www.melma.com/backnumber_170609_4062558/ 参考
これを参考に、時刻の幅の間もAND演算子を使って、やってみてください。VBAにBetween演算子は在りません。
    • good
    • 0

こんにちは。



現在の時刻は Time で取得できます。ちなみに日付は Date で、Nowで両方が一度に取得できます。

『現在時刻が12:00~14:00までの間だったら、処理Aを行なう』は
If Time >= "12:00" And Time >= "14:00" then
処理A
End If
とすればできます。
    • good
    • 2

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

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

gooドクター

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

人気Q&Aランキング