Access VBA Select Caseで範囲指定や比較条件の設定

 

アクセス担当のまみです。

 

Select CaseってIFよりコードがわかりやすいのでよく使うのですが、条件判断で範囲指定する際に「To」や「Is」を使います。

 

IFとは違う特徴がありますが、コードがスッキリ見やすいのでおススメです。

 

toを使って範囲指定する

 

Select Caseの基本的な使い方は下記の記事をどうぞ!

 

【Access】VBA Select Caseで条件分岐する方法

2018年12月17日

 

(あいちゃん)
Select CaseってToが使えるんだよ。

 

(はてな君)
じゃあ「1 To 50」で1から50までって指定ができるんだね。

 

(あいちゃん)
そうそう。さっそくフォームを作成してみよう!

 

リボンの①「作成」タブから②「フォームデザイン」を選択します。

 

ラベルとテキストボックス、ボタンを1つずつ配置しましょう。

 

ラベル 「1~100までを入力してください」

テキストボックスの名前 「tx数字」

ボタンの名前 「btnチェック」

ボタンの標題 「チェック」

 

 

フォームの作り方の詳細は下記の記事をどうぞ!

 

アクセスVBAでフォームにボタンを配置しよう

2018年9月18日

 

 

③「btnチェック」を選択した状態で、プロパティシートの④「イベント」タブを選択して「クリック時」に「イベントプロシージャ」を選びコードの画面を表示します。

 

「Private Sub btnチェック_Click()」と「End Sub」の間に下記のコードを記載しましょう。

 

Dim check As Integer

check = Nz(Me.tx数字.Value)

Select Case check
    Case 1 To 50
        MsgBox "△"
    Case 51 To 80
        MsgBox "○"
    Case 81 To 100
        MsgBox "◎"
    Case Else
        MsgBox "1~100までを入力してください"
End Select

 

 

1~100までの数字が入力されたら、その数字を判断して「△」「○」」「◎」が表示、1~100以外が入力されたら1~100までの入力を求めるプログラムです。

 

[quads id=2]

コードをコピーされたい場合は下記の記事を参考にしてください。

 

関連記事
 
 
 
 
(あいちゃん)
フォームビューで動作確認してみてね!
 
 
 
 
(はてな君)
じゃあ「90」を入力してみようかな!
 
 
 
 
 
 
 
 
フォームは「F_チェック」と名前をつけておきましょう。
 

 

Isを使って比較する

 

(あいちゃん)
0より大きいときとか100より小さいときのような範囲を指定したい場合は「Is」を使うんだよ。

 

(はてな君)
Is?

 

(あいちゃん)
「Is>0」とか「Is<100」とかって書くんだよ。

 

(はてな君)
ふ~んそうなんだ。
あっちょっと思いついたことがあるんだ!頑張ってみる!

 

 

 

開始時間

ラベルの標題 テキストボックスの名前
開始時刻 tx開始時刻
時間 tx開始時間
tx開始分
tx開始秒

 

終了時間

ラベルの標題 テキストボックスの名前
終了時刻 tx終了時刻
時間 tx終了時間
tx終了分
tx終了秒

 

 

経過時間

ラベルの標題 テキストボックスの名前
時間 tx経過時間
tx経過分
tx経過秒

 

ボタン

名前 標題
時間 btn計算

 

 

(はてな君)
開始時刻と終了時刻の「時間」「分」「秒」を別々に表示するためにコントロールソースの設定もしたよ!

 

コントロールソースの設定

単位 開始時刻 終了時刻
時間 =Hour([tx開始時刻]) =Hour([tx終了時刻])
=Minute([tx開始時刻]) =Minute([tx終了時刻])
=Second([tx開始時刻]) =Second([tx終了時刻])

 

詳細は下記の記事をどうぞ!

Access日付にまつわる関数の色々

2018年12月7日

 

①「btn計算」を選択した状態で、プロパティシートの②「イベント」タブを選択して「クリック時」に「イベントプロシージャ」を選びコードの画面を表示します。

 

「Private Sub btn計算_Click()」と「End Sub」の間に下記のコードを記載しましょう。

 

Dim sec As Integer
Dim min As Integer
Dim hour As Integer

sec = Me.tx終了秒.Value - Me.tx開始秒.Value
min = Me.tx終了分.Value - Me.tx開始分.Value
hour = Me.tx終了時間.Value - Me.tx開始時間.Value

Select Case sec

Case Is < 0

    Select Case min
    
    Case Is > 0
        Me.tx経過秒.Value = sec + 60
        Me.tx経過分.Value = min - 1
        Me.tx経過時間.Value = hour
        
    Case Else
        Me.tx経過秒.Value = sec + 60
        Me.tx経過分.Value = min + 60 - 1
        Me.tx経過時間.Value = hour - 1
        
    End Select

Case Else

    Select Case min
    
    Case Is < 0
        Me.tx経過秒.Value = sec
        Me.tx経過分.Value = min + 60
        Me.tx経過時間.Value = hour - 1
        
    Case Else
        Me.tx経過秒.Value = sec
        Me.tx経過分.Value = min
        Me.tx経過時間.Value = hour
        
    End Select

End Select

 

 

(はてな君)
Isを使った条件判断で経過時間を計算をしてくれるプログラムを作ってみたんだ!

 

 

(あいちゃん)
はてな君頑張ったね!
Select Caseの使い方はバッチリかな?
だけど経過時間の計算ってもっと簡単にできる方法があるんだよ!

 

【Access】開始時刻から終了時刻までの時間の計算をする方法

2018年12月18日

 

(はてな君)
えっ・・・
Select Caseの勉強になったってことで・・・

 

フォームには「F_時間計算」と名前をつけておきましょう。

 

まとめ

 

Select Caseって慣れるとコードが見やすくてとっても重宝します。

 

ぜひ活用してくださいね!

 

スポンサーリンク