【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。IMMRです。ExcelVBAには、時間を操作する関数があります。
「頻繁に使われるもの」もあれば「あまり使われないもの」もありますがいくつか紹介していきます。
時刻から時、分、秒を取得するには、Hour関数、Minute関数、Second関数を使用します。
指定した時刻から時、分、秒のいずれかを取得します。
書き方 Hour(時刻)、Minute(時刻)、Second(時刻)
サンプルコード
Sub TEST1()
MsgBox Hour("09:45:30") ・・・1-1
MsgBox Minute("09:45:30") ・・・1-2
MsgBox Second("09:45:30") ・・・1-3
End Sub
1-1の実行結果は、「9」
1-2の実行結果は、「45」
1-3の実行結果は、「30」とメッセージボックスが表示されます。
現在の日付を取得するにはNow関数, Time関数を使用します。
表示をした時の日付+時間、時間を表示します。そのため、処理を実行した日時によって変わります。
書き方 Now, Time ※設定値はありません。
サンプルコード
Sub TEST2()
MsgBox Now ・・・2-1
MsgBox Time ・・・2-2
End Sub
2-1の実行結果は、「処理を実行した日付+時間」 例:2021/04/20 20:15:40
2-2の実行結果は、「処理を実行した日付」例:20:15:40 とメッセージボックスが表示されます。
指定した2つの時間から間隔を取得するにはDateDiff関数を使用します。
指定した2つの時間から間隔を取得して、設定した時間単位で時単位、分単位、単位を秒単位を表示します。
書き方 DateDiff(時間単位, 時間1, 時間2)
時間単位
設定値 | 内容 |
---|---|
h | 時 |
n | 分 |
s | 秒 |
※分は、mではなくnであることに注意
サンプルコード
Sub TEST3()
MsgBox DateDiff("h", "09:50:30", "11:50:30") ・・・3-1
MsgBox DateDiff("n", "09:50:30", "10:10:30") ・・・3-2
MsgBox DateDiff("s", "09:50:30", "09:50:40") ・・・3-3
End Sub
3-1の実行結果は、「2」
3-2の実行結果は、「20」
3-3の実行結果は、「10」とメッセージボックスが表示されます。
指定時間から加算・減算した時間を取得するにはDataAdd関数を使用します。
指定した時間から加算・減算した時間を表示します。加算するのは時、分、秒などがあります。
書き方 DataAdd(時間単位, 加算する数値, 時間)
※時間単位の詳細については、「時間を操作をする関数③ 【2つの時間の間隔を取得】」で説明したものと同じです。
サンプルコード
Sub TEST4()
MsgBox DateAdd("h", 3, "08:30:15") ・・・4-1
MsgBox DateAdd("n", -40, "08:30:15") ・・・4-2
MsgBox DateAdd("s", 50, "08:30:15") ・・・4-3
End Sub
3-1の実行結果は、「11:30:15」
3-2の実行結果は、「7:50:15」
3-3の実行結果は、「8:31:05」とメッセージボックスが表示されます。
時間の書式を取得にはFormat関数を使用します。
時間の書式を変更しますが表示方法は記号で変わってきます。
書き方 Format(日付, 表示方法)
①表示方法(時間)
記号 | 内容 |
---|---|
h | 時(0~9の場合、頭に0が付かない) |
hh | 時(0~9の場合、頭に0が付く) |
n | 分(0~9の場合、頭に0が付かない) |
nn | 分(0~9の場合、頭に0が付く) |
s | 秒(0~9の場合、頭に0が付かない) |
ss | 秒(0~9の場合、頭に0が付く) |
※分は、mではなくnであることに注意
②表示方法(区切り)
記号 | 内容 |
---|---|
: | 時間の区切り |
& | (0~9の場合、頭に0が付かない) |
@ | (0~9の場合、頭に0が付く) |
サンプルコード① (時間偏)
Sub TEST5_1()
MsgBox Format("09:45:20", "h") ・・・5-1-1
MsgBox Format("9:45:20", "hh") ・・・5-1-2
MsgBox Format("11:05:20", "n") ・・・5-1-3
MsgBox Format("11:5:20", "nn") ・・・5-1-4
MsgBox Format("11:45:02", "s") ・・・5-1-5
MsgBox Format("11:45:2", "ss") ・・・5-1-6
End Sub
5-1-1の実行結果は、「9」
5-1-2の実行結果は、「09」
5-1-3の実行結果は、「5」
5-1-4の実行結果は、「05」
5-1-5の実行結果は、「2」
5-1-6の実行結果は、「02」とメッセージボックスが表示されます。
サンプルコード② (区切り偏) ※スペースの存在がわかるように前後に"*"を付与しています。
Sub TEST5_2()
MsgBox "*" + Format("91530", "&&:&&:&&") + "*" ・・・5-2-1
MsgBox "*" + Format("91530", "@@:@@:@@") + "*" ・・・5-2-2
End Sub
5-2-1の実行結果は、「*9:15:30*」
5-2-2の実行結果は、「* 9:15:30*」とメッセージボックスが表示されます。
今まで説明してきた(時間偏)、(区切り偏)を結合して行うことも出来ます。
サンプルコード③ (結合偏)
Sub TEST5_3()
MsgBox Format("9:5:1", "hh:nn:ss") ・・・5-3-1
MsgBox Format("07:04:03", "h:n:s") ・・・5-3-2
MsgBox Format("053022", "@@:@@:@@") ・・・5-3-3
End Sub
5-3-1の実行結果は、「09:05:01」
5-3-2の実行結果は、「7:4:3」
5-3-3の実行結果は、「05:30:22」 とメッセージボックスが表示されます。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート