• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA ユーザーフォームで)

VBAユーザーフォームで時間計算と入力制御について

このQ&Aのポイント
  • VBAのユーザーフォームで時間を入力し、計算結果を分単位で表示したいです。具体的には、スタート時間とエンド時間を入力して、経過時間を表示する方法が知りたいです。
  • さらに、時間の表示形式をhh:mmではなく、mm単位で表示する方法についても教えてください。
  • さらに、時間入力時に2バイト入力で次の入力欄に移動するようにする方法についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

参考になるかどうか?取り合えずいくつか紹介します。 ユーザーフォーム上に 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

potara_ran
質問者

お礼

早速のご返答ありがとうございます。 時間は、Timevalueを使えばいいのですね。また、秒まで指定しないといけないので、最後の"&:0"で、秒も指定しているのですね。 ただ引いても、変数が少数点にしかならなかったのでとても助かりました。 ありがとうございました。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

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

potara_ran
質問者

お礼

早速のご回答ありがとうございます。 コンボボックスを使用する意味は、時間の入力の為、シート2に0~23までと、0~59までを用意しておき、それぞれComboboxに反映させて選択できるようにと考えました。また、Comboboxなら入力も可能ですのでComboboxを使用しようと思いました。 上記コードで、シート2に値を入力しなくても、反映させることが出来るのですね。参考になりました。ありがとうございます。