[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『タイマ−を表示させたい』(みこ)
D2のセルにストップウォッチ(秒単位)のタイマ−を表示させたい。
シ−トが開いたらカウント開始。
タイマ−停止ボタンを設けたい。
タイマ−が作動中にシ−トを閉じたら、
次回、シ−トを開けたら、タイマ−にリセットが、
かかり、0から作動し始める。
宜しく
ご教授のほど
お願いします。
マクロは、ボタンを作り、記録できるぐらいのレベルです。
停止ボタンを押したら、その計測値をどうするのですか? 特に計測中に表示がなくてもよいのであれば、シートを開いた時の時間を シートに残して、ボタンを押したときに差を取ればよいように思いますが、 どうでしょうか。
シートモジュールに下記を置き、シートに CommandButton1 を配置してシートを 切り替えてみてください。
Private Sub CommandButton1_Click() If Range("A1").Value <> "" Then CommandButton1.Enabled = False CommandButton1.Caption = "計測終了" Range("A2") = Now() - Range("A1").Value Range("A2").NumberFormatLocal = "[hh]:mm:ss" End If End Sub
Private Sub Worksheet_Activate() If Range("A2").Value = "" Then Range("A1").Value = Now() CommandButton1.Enabled = True CommandButton1.Caption = "計測中" End If End Sub
(Mook)
新規ブック(Sheet1というシートがある)にて試してください。
まず、標準モジュールに
'================================= Sub コントロール設定() With worksheets("sheet1") With .OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=421.5, Top:=15.75, Width:=57, Height:= _ 30) .Object.Caption = "停止" End With With .TextBoxes.Add([d1].Left, [d1].Top, [d1].Width, [d1].Height) .Name = "w_text" .HorizontalAlignment = xlRight End With End With End Sub
まず、上記の「コントロール設定」設定というプログラムを実行して Sheet1にテキストボックスとコマンドボタンを作成してください
------------------------------------------------------------------------
次にThisworkbookのモジュールに
'================================================================= Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public stt_flg As Boolean Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh Is Worksheets("sheet1") Then start_watch End Sub '================================================================== Private Sub Workbook_WindowActivate(ByVal Wn As Window) If Wn.ActiveSheet Is Worksheets("sheet1") Then start_watch
End Sub '============================================================================== Sub start_watch() Dim nw As Double With Worksheets("sheet1") stt_flg = True nw = Now
Do Until Not stt_flg .TextBoxes("w_text").Text = Format(Now() - nw, "h:mm:ss") Sleep 100 DoEvents Loop End With End Sub
最後にSheet1のモジュールに '======================================================================= Private Sub CommandButton1_Click() ThisWorkbook.stt_flg = False End Sub
これで一度保存した後、試してみてください
ichinose
ichinose様、思い通りの回答および解りやすい内容で、
感謝しています。
ご教授ありがとうございました。
(みこ)
お願いします。
停止ボタンを
コマンドボタンより、
移動やボタンの大きさを変えれる記録用のボタンでは、
作れないでしょうか?
(みこ)
前投稿の
With .OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=421.5, Top:=15.75, Width:=57, Height:= _ 30) .Object.Caption = "停止" End With
で作成したコマンドボタンは、コマンドバー「コントロールツールボックス」にあるコマンドボタンです。 これも移動やボタンの大きさは変えられますよ!! 同じコマンドバー「コントロールツールボックス」にデザインモードというボタン(三角定規のボタン)が ありますよね? これをクリックすると上記コードで作成のコマンドボタンが編集(移動や大きさ変更等)できます。 編集終了後には、再度、三角定規のボタンをクリックし、デザインモードを終了させます。
どうしても >移動やボタンの大きさを変えれる記録用のボタン (コマンドバー「フォーム」にあるボタン)がよいなら・・・。
再度新規ブック(Sheet1というシートがある)にて,
まず、標準モジュールに
'================================= Sub コントロール設定2() With Worksheets("sheet1") With .Buttons.Add(Left:=421.5, Top:=15.75, Width:=57, Height:=30) .Caption = "停止" .OnAction = "sheet1!CommandButton1_Click" End With With .TextBoxes.Add([d1].Left, [d1].Top, [d1].Width, [d1].Height) .Name = "w_text" .HorizontalAlignment = xlRight End With End With End Sub
まず、上記の「コントロール設定」設定というプログラムを実行して Sheet1にテキストボックスとボタンを作成してください
------------------------------------------------------------------------
次にThisworkbookのモジュールに
'================================================================= Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public stt_flg As Boolean Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh Is Worksheets("sheet1") Then start_watch End Sub '================================================================== Private Sub Workbook_WindowActivate(ByVal Wn As Window) If Wn.ActiveSheet Is Worksheets("sheet1") Then start_watch
End Sub '============================================================================== Sub start_watch() Dim nw As Double With Worksheets("sheet1") stt_flg = True nw = Now
Do Until Not stt_flg .TextBoxes("w_text").Text = Format(Now() - nw, "h:mm:ss") Sleep 100 DoEvents Loop End With End Sub
最後にSheet1のモジュールに
'======================================================================= Sub CommandButton1_Click() '注意 前回投稿のPrivateキーワードは削除 ThisWorkbook.stt_flg = False End Sub
これで一度保存した後、試してみてください
ichinose
再度の
ご教授ありがとうございました。
>同じコマンドバー「コントロールツールボックス」にデザインモードというボタン(三 角定規のボタン)が ありますよね? これをクリックすると上記コードで作成のコマンドボタンが編集(移 動や大きさ変更等)できます。 編集終了後には、再度、三角定規のボタンをクリックし、デザインモードを終了させます。
出来ました。
大変勉強になりました。
ありがとうございました。
(みこ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.