- ベストアンサー
VBAユーザーフォームで時間計算と入力制御について
- VBAのユーザーフォームで時間を入力し、計算結果を分単位で表示したいです。具体的には、スタート時間とエンド時間を入力して、経過時間を表示する方法が知りたいです。
- さらに、時間の表示形式をhh:mmではなく、mm単位で表示する方法についても教えてください。
- さらに、時間入力時に2バイト入力で次の入力欄に移動するようにする方法についても教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考になるかどうか?取り合えずいくつか紹介します。 ユーザーフォーム上に Textbox1とTextBox2が準備されているとして Private Sub CommandButton1_Click() Dim mytime3 As Date mytime1 = TimeValue(ComboBox1.Value & ":" & ComboBox2.Value & ": 0") mytime2 = TimeValue(ComboBox3.Value & ":" & ComboBox4.Value & ": 0") mytime3 = mytime2 - mytime1 TextBox1.Value = mytime3 TextBox2.Value = Hour(mytime3) * 60 + Minute(mytime3) End Sub >2バイト入れれば次のコンボボックスにカーソルが移動するような制御はありますか? コンボボックスなのでRowSorceで0~59とか0~23とか設定できると思います。取り合えずカーソルの移動であれば Private Sub ComboBox1_Change() ComboBox2.SetFocus End Sub
その他の回答 (1)
- hige_082
- ベストアンサー率50% (379/747)
comboboxを使用する意味は? 次のコードを実行してみて Private Sub UserForm_Initialize() Dim i As Integer For i = 0 To 23 ComboBox1.AddItem Format(i, "00") Next i For i = 0 To 59 ComboBox2.AddItem Format(i, "00") Next i End Sub Private Sub ComboBox1_Change() ComboBox2.SetFocus End Sub
お礼
早速のご回答ありがとうございます。 コンボボックスを使用する意味は、時間の入力の為、シート2に0~23までと、0~59までを用意しておき、それぞれComboboxに反映させて選択できるようにと考えました。また、Comboboxなら入力も可能ですのでComboboxを使用しようと思いました。 上記コードで、シート2に値を入力しなくても、反映させることが出来るのですね。参考になりました。ありがとうございます。
お礼
早速のご返答ありがとうございます。 時間は、Timevalueを使えばいいのですね。また、秒まで指定しないといけないので、最後の"&:0"で、秒も指定しているのですね。 ただ引いても、変数が少数点にしかならなかったのでとても助かりました。 ありがとうございました。