2017-12-14 12 views
0

私は、ユーザーフォームでExcelファイルを使用して、一部のユーザーが一連のタスクを完了するのにかかる時間を制御しています。ボタンを2回クリックする間にタイマーを設定する

私は起動時に開くユーザーフォームを持っています。ボタンをクリックするとすぐに時間がカウントされ始めます。しかし、私はそれをどうやってできるのか本当に分かりません。

タスクが完了し、ユーザーが[終了]または[完了]をクリックしてからスプレッドシートに保存するまで、タイマーを実行する必要があります。

+0

VBAでプログラミングする方法は知っていますか? – peakpeak

+0

2つのイベントの間の時間をカウントアップするか、カウントアップするときに時間を画面に表示しますか? –

+0

@peakpeak私は以前に慣れていました。しかし、私がした暇つぶしの時間は高校にあった。 10年前。 – Barbaaz

答えて

0

少し異なるアプローチを提案します。ユーザーフォームで、変数を宣言します。

Private startTime As Double 
Private endTime As Double 
Private blTime As Boolean 

blTimeは、アプリケーションにクロックが掛かることを通知する倍精度です。ユーザーフォームが起動されたときにその後のstartTimeの値を設定します。

Private Sub UserForm_Initialize() 
    startime = Time 
    blTime = True 
End Sub 

私はあなたのボタンの完全な制御がcbComplete命名されthetを想定しています。ボタンの本名に変更してください

Private Sub cbComplete_Click() 
    If blTime Then endTime = Time 
    blTime = False 
End Sub 

ボタンをクリックするとクロックがオフになります(blTime = False)。他のボタンにも同様のコードを追加することができますが、最初のクリックだけが重要です。 私たちが必要とするのは、フォームから経過した時間を得る方法です。プロパティを使用:

Property Get Timespan() As Double 
    If Not blTime Then 
     Timespan = endTime - startTime 
    Else 
     Timespan = 0 
End Property 

次に、モジュールでUserForm1.Timespanコマンドを使用できます。または形式をきちんと整えてください:

Format(UserForm1.Timespan, "hh:mm:dd") 

重要:UserFormは前に読み込むことはできません。

0

あなたはこのような何かを適応させることができます:

Sub CalculateRunTime_Minutes() 
'PURPOSE: Determine how many minutes it took for code to completely run 
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault 

Dim StartTime As Double 
Dim MinutesElapsed As String 

'Remember time when macro starts 
    StartTime = Timer 

'***************************** 
'Insert Your Code Here... 
'***************************** 

'Determine how many seconds code took to run 
    MinutesElapsed = Format((Timer - StartTime)/86400, "hh:mm:ss") 

'Notify user in seconds 
    MsgBox "This code ran successfully in " & MinutesElapsed & " minutes", vbInformation 

End Sub 

は、あなたのニーズに合わせて。ソースは、あなたがVBAのTimer機能here

についての詳細を学ぶことができhere

である第二のオプションは、あなたの現在の時間を与えるだろうNowfunction用いることであろう。したがって、たとえば:

t = Now 
.... run your tasks.... 
tfinal = Now 
time_elapsed = tfinal - t 
+0

@Barbaazもし私があなたを助けてくれたら、私の回答に答えを記入してください:)ありがとう。 – Petrichor

+0

私は 'Timer'機能を理解する上でいくつかの問題を抱えています。 これはこれまで私が持っていたものです。 [ペーストビン](https://pastebin.com/WMYLnZ7s) – Barbaaz

関連する問題