[[20090513133425]] 『タイマ−を表示させたい』(みこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『タイマ−を表示させたい』(みこ)

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


Mook様、回答ありがとうございます。

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


ichinose様、

再度の

ご教授ありがとうございました。

 >同じコマンドバー「コントロールツールボックス」にデザインモードというボタン(三 角定規のボタン)が
 ありますよね? これをクリックすると上記コードで作成のコマンドボタンが編集(移  動や大きさ変更等)できます。
  編集終了後には、再度、三角定規のボタンをクリックし、デザインモードを終了させます。

出来ました。

大変勉強になりました。

ありがとうございました。

(みこ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.