Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3693 / 13646 ツリー ←次へ | 前へ→

【60658】VBA フォームに時計 シンプル座敷 09/3/6(金) 21:29 質問[未読]
【60660】Re:VBA フォームに時計 ichinose 09/3/6(金) 22:32 発言[未読]
【60669】Re:VBA フォームに時計 シンプル座敷 09/3/7(土) 10:22 お礼[未読]
【60672】Re:VBA フォームに時計 ichinose 09/3/7(土) 11:52 発言[未読]
【60685】Re:VBA フォームに時計 シンプル座敷 09/3/8(日) 21:48 お礼[未読]

【60658】VBA フォームに時計
質問  シンプル座敷  - 09/3/6(金) 21:29 -

引用なし
パスワード
   はじめまして。
調べても解決しないので質問させてもらいます。

Private Sub UserForm_Initialize()
  TextBox1.Text = Format(Time, "hh:mm")
  Application.OnTime Now + TimeValue("0:00:01"), "UserForm_Initialize"
End Sub
とやるとフォームに時間は表示しますが動きません。
フォームに動いた状態の時計を表示するにはどうしたらよいですか?

【60660】Re:VBA フォームに時計
発言  ichinose  - 09/3/6(金) 22:32 -

引用なし
パスワード
   ▼シンプル座敷 さん:
こんばんは。
時刻を表示するだけなら、テキストボックスではなく、ラベルに表示した方が良さそうですが・・・。
それは、検討していただくとして。

私なら、

Option Explicit
'========================================================================
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private stoptm As Boolean
'========================================================================
Private Sub UserForm_Activate()
  stoptm = False
  Do Until stoptm
    TextBox1.Value = Format([now()], "hh:mm:ss")
    DoEvents
    Sleep 100
  Loop
End Sub
'========================================================================
Private Sub UserForm_Terminate()
  stoptm = True
End Sub

【60669】Re:VBA フォームに時計
お礼  シンプル座敷  - 09/3/7(土) 10:22 -

引用なし
パスワード
   ありがとうございます。
うまくできました。

ちなみにラベルのほうがよろしかったんですか?
テキストだと書き換えができちゃうってことなんですかね?

【60672】Re:VBA フォームに時計
発言  ichinose  - 09/3/7(土) 11:52 -

引用なし
パスワード
   ▼シンプル座敷 さん:
こんにちは。

>ちなみにラベルのほうがよろしかったんですか?
>テキストだと書き換えができちゃうってことなんですかね?
見せるだけなら、ラベルでよいですよね!!

新規ブックにユーザーフォームだけ作成してください(UserForm1)。

コントロールは、コード配置しますから、何も配置しないでください。

標準モジュールに

'=================================
sub sample()
  userform1.show
end sub


Userform1のモジュールに

'====================================================
Option Explicit
Dim dsptime As MSForms.Label
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private stoptm As Boolean
'=======================================================================
Private Sub UserForm_Initialize()
  With Me
    .Width = 200
    .Height = 100
    .Caption = "デジタルウォッチ"
   
    Set dsptime = .Controls.Add("Forms.Label.1", , True)
    With dsptime
     .Left = 30
     .Top = 18
     .Width = 132
     .Height = 36
     .SpecialEffect = fmSpecialEffectSunken
     .BackColor = &H80000009
     .Font.Size = 32
     .TextAlign = fmTextAlignRight
    End With
  End With
End Sub
'========================================================================
Private Sub UserForm_Activate()
  stoptm = False
  Do Until stoptm
    dsptime.Caption = Format([now()], "hh:mm:ss")
    DoEvents
    Sleep 100
  Loop
End Sub
'========================================================================
Private Sub UserForm_Terminate()
  stoptm = True
End Sub


これでSampleを実行してみてください。

ラベルに時刻表示した例です。

【60685】Re:VBA フォームに時計
お礼  シンプル座敷  - 09/3/8(日) 21:48 -

引用なし
パスワード
   サンプルありがとうです。
調べてもどうしてもわからなくなったら
またお願いします。

3693 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free