• ベストアンサー

エクセル マクロ 時間

1)フォームにて時間を表示する。コンボボックス2つ作る。コマンドボタン(記録)を1つ作る。 2)1つのコンボボックスには時を選択させる。リストはリストはSheet2に01・02・03・・・とA列に00まで作る。 3)もう1つのコンボボックスには分を選択させる。リストはSheet2に01・02・03・・・とB列に00まで作る。 4)フォームの記録ボタンを押すと、sheet1のA2に(例 23:34)と表示させたい。 マクロの記述を教えてください。

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

時刻の数字って定数なんだから2と3は不要でしょう。 動的に変化する値ならそうやってシートに書き出してくというのも一つの手ですが。 1.フォームがLoadされる時にcomboboxに値をセットする。 Me.ComboBox1.AddItem ("01") Me.ComboBox1.AddItem ("02") Me.ComboBox1.AddItem ("03") ... Me.ComboBox2.AddItem ("01") Me.ComboBox2.AddItem ("02") Me.ComboBox2.AddItem ("03") ... 2.ボタンをおしたら下記コード ActiveSheet.Range("A2").Value = ComboBox1.Value & ":" & ComboBox2.Value

pop2003
質問者

お礼

ありがとうございました。上手く解決しました。本当に感謝しています。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

個人的見解では、数字は入力が容易なのでいちいち ComboBox で選択するのは使い勝手が悪いと思いますが、、、 (特に 後半の数字など) UserForm に ComboBox を2つ、TextBox を1つ、CommandButton を2つ置いてます。 Private Sub UserForm_Initialize() Dim i As Integer  Me.CommandButton1.Caption = "ComboBox 記録"  Me.CommandButton2.Caption = "TextBox 記録"  Me.TextBox1.IMEMode = fmIMEModeDisable  For i = 0 To 23    Me.ComboBox1.AddItem Format(i, "00")  Next i  For i = 0 To 59    Me.ComboBox2.AddItem Format(i, "00")  Next i End Sub Private Sub CommandButton1_Click() Dim myTime  myTime = Me.ComboBox1.Value & ":" & Me.ComboBox2.Value  If IsDate(myTime) Then    Worksheets(1).Range("A2").Value = myTime  End If End Sub Private Sub CommandButton2_Click()  If IsDate(TextBox1.Value) Then    Worksheets(1).Range("A3").Value = TextBox1.Value  Else    MsgBox "入力値を見直して下さい(h:ss)", vbExclamation, "エラー"  End If End Sub

pop2003
質問者

お礼

papayukaさんありがとうございます。いつも適確なアドバイスに感謝しています。今回も上手くいきました。

関連するQ&A