2016-12-22 5 views
2

私はストップウォッチとして使用したいMicrosoft Excelのユーザーフォームを持っています。しかしのフォーマット「HH:MM」それは午後12時00VBA Dateadd形式 - 合計分での必要性

Private Sub SpinButton2_SpinUp() 

If InsertEvent.TextBox1 = vbNullString Then 
InsertEvent.TextBox1 = "00:00" 

Else 

InsertEvent.TextBox1.Value = Format(DateAdd("n", 1,  InsertEvent.TextBox1.Value), "hh:mm") 
'InsertEvent.TextBox1.Value = TimeValue("mm:ss") 
'InsertEvent.TextBox1.Value = Format(InsertEvent.TextBox1.Value, "hh:mm") 

End If 

End Sub 

に戻って、それが全体のクロックとして働くことができるように、これをフォーマットするためにとにかくあり23時59分より上に行くことはできません。分?理想的には約125分(125:00)にする必要がありますが、無制限であれば問題ありません。

答えて

4

日付/時刻ではない表現が必要な場合は、組み込みの日付/時刻関数を使用することはできません。

あなたがテキストボックスにスピナー値を読みたいと仮定:

Private Sub SpinButton2_SpinUp() 
    Dim minutes As Integer: minutes = Val(InsertEvent.SpinButton2.Value) 
    Dim hh As Integer:  hh = minutes \ 60 
    Dim mm As Integer:  mm = minutes - (hh * 60) 

    InsertEvent.TextBox1.Text = Format$(hh, "00") & ":" & Format$(mm, "00") 
End Sub 

あなたは再解析「HH:MM」する必要が始まるアップ/ダウンポイントとしてテキストボックスから手動で入力された値を使用するにはバックテキストボックスのExitイベントで例えば分、へ:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    If (IsNumeric(TextBox1.Text)) Then 
     '// entering a number only assumes its minutes 
     SpinButton2.Value = TextBox1.Text 
     Exit Sub 
    End If 

    Dim hhmm() As String: hhmm = Split(TextBox1.Text, ":") 
    If (UBound(hhmm) = 1) Then 
     If (IsNumeric(hhmm(0)) And IsNumeric(hhmm(1))) Then 
      SpinButton2.Value = (hhmm(0) * 60) + hhmm(1) 
      Exit Sub 
     End If 
    End If 

    SpinButton2.Value = 0 
End Sub 

(/スピナー.MAXプロパティを超えるオーバーフローのエラーチェックを追加する必要があります)

+0

ありがとう!それは私が必要とするほとんどのように見えますが、テキストボックスに数字を入力し、スピンボタンを使用して増減したい場合は機能しません。それは私の元のdateaddと一緒に働いた... 例えば、私が開始する時計に20:00を入力し、 "スピンアップ"ボタンをクリックすると、それは00:00からまっすぐに始まります... –

+0

それは簡単に失われ、上に更新されますか? –