オプションボタンの使い分けによる時間計算
オプションボタンの使い分け(自動入力と手動入力)によって、
「●やりたい操作」を行うには以下のコードをどのように修正すれば、
良いでしょうか?ご存知の方ご教示願います。
使用機種はWindowsVistaでExcel2007です
私はVBAをはじめて2カ月程度の初心者です。
●やりたい操作
A)「自動入力」を選択(赤色部分)→原則の操作
1.「作業開始ボタン」を押すと「開始時間」が現在の時間になる。
2.「作業開始ボタン」を押すと表記が「作業終了」になる。
3.「作業終了ボタン」を押すと「終了時間」が現在の時間表記になる。
4.3と同時に「作業時間」が「終了時間」-「開始時間」の時間計算を行って
表記される。
※このとき「手動入力ラベル」や「テキストボックス」には、それぞれロックが
かかり、入力不可状態にする
B)「手動入力」を選択(青色部分)→例外の操作
1.左から1番目のテキストボックスに「hh:mm」形式で任意の時間を入力
2.左から2番目のテキストボックスに「hh:mm」形式で任意の時間を入力
3.左から3番目のテキストボックスに「hh:mm」形式で2-1の時間計算
を行う
※このとき「自動入力ラベル」、「作業開始ボタン」、「開始時間」、
「終了時間」にそれぞれロックがかかる。
●コード
Option Explicit
' True なら計測中を表す
Dim inProcess As Boolean
Private j_Kaishi As Date
Private j_Syuryo As Date
Private s_kaishi As Date
Private s_Syuryo As Date
Private Sub UserForm_Initialize()
OptionButton1 = True
OptionButton2 = False
TextBox5.Locked = True
TextBox6.Locked = True
TextBox7.Locked = True
Label22.Caption = "開始時間"
Label23.Caption = "終了時間"
Label23.Caption = "作業時間"
'オプションボタンが1「自動」にオンならば、CommandButton6_Clickを呼び出す
If OptionButton1 = True Then
Call CommandButton6_Click
'オプションボタン1が「自動」にオフならば、 OptionButton2_Clickを呼び出す
Else
Call OptionButton2_Click
End If
End Sub
'開始時間を自動入力クリックするとラベル1が時間に変わる
Private Sub CommandButton6_Click()
Select Case inProcess
Case False ' 計測を開始する
inProcess = True
j_Kaishi = Time
Label22.Caption = Format(j_Kaishi, "hh:mm")
Label23.Caption = ""
Label24.Caption = ""
CommandButton6.Caption = "作業終了"
Case True
' 計測を終了してインターバルを表示
inProcess = False
j_Syuryo = Time
Label23.Caption = Format(j_Syuryo, "hh:mm")
Label24.Caption = Format(j_Syuryo - j_Kaishi, "hh:mm")
CommandButton6.Caption = "作業開始"
End Select
End Sub
'開始時間を手動入力
Private Sub OptionButton2_Click()
CommandButton6.Locked = True
TextBox5.Locked = False
TextBox6.Locked = False
s_kaishi = Time
TextBox5.Text = Format(s_kaishi, "hh:mm")
s_Syuryo = Time
TextBox6.Text = Format(s_Syuryo, "hh:mm")
TextBox7.Text = Format(s_Syuryo - j_Kaishi, "hh:mm")
End Sub