• ベストアンサー

エクセルVBA

ユーザーフォームのテキストボックスに現在時間を表示し、表示を時計のように現在時刻を表示し続ける方法を教えてください。 以下は現在のコマンドです。 Private Sub txtTime_Change() End Sub Private Sub UserForm_Initialize() UserForm1.txtTime.Value = Time End Sub よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

エクセルの関係で、時刻を表示する場所は(タスクバー場などを除く) (1)シートの、決めたセルに表示 (2)シートの上に貼り付けたオブジェクト(テキストボックス、ラベルなど) に表示 (3)ユーザーフォームの上に張り付けたテキストボックス、ラベルなどに表示 (4)ユーザーフォームの地の部分に標示。これはできない?ようだ。Captionを使ってよいなら表示できる。 などが考えられる。 (3)を希望するらしいが、日付時刻だけなら、初心者なら、単純にすべきだ。 Googleで「エクセル VBA 時計を表示」などで照会すれば、記事がでてくる。これさえやってないね。 その中に https://www.moug.net/tech/exvba/0130009.html  簡易時計 がある。 Sub Sample() Dim myTime As Date myTime = CDate(Format(Now() + TimeValue("00:01:00"), "hh:mm:00")) Range("A1").Value = Now() Columns("A").AutoFit Application.OnTime myTime, "Sample" End Sub ーー ユーザーフォームの上のテキストボックスなら、 Sub Sample1() Dim myTime As Date myTime = CDate(Format(Now() + TimeValue("00:01:00"), "hh:mm:00")) UserForm1.TextBox1.Text = Now() UserForm1.TextBox1 = Now() Columns("A").AutoFit Application.OnTime myTime, "Sample1" UserForm1.Caption = Now() UserForm1.Show vbModeless End Sub 秒単位の実行指定なら、それほど問題はないが、分、時単位になると、スタート(当プログラム起動)時刻によっては、パソコン表示と、分時の表示が食い違う表示になる可能性があるかも。 理系の使い方など、用途によっては、もっと別の仕組みの利用(APIなど)が必要だろう。 UserFormやシートとユーザーフォームの画面関係の表示など、小生に詳しく判らないことが多々あるが、とりあえず上げておきます。 シートの上にテキストボックスをはりつける例では、WEBに下記が見つかった。ただし一部修正している。 確認利用後、Msgboxは削除のこと。 Dim S As Boolean Sub 開始() S = True 時計起動 End Sub Sub 時計起動() If S = False Then End MsgBox TypeName(Worksheets("Sheet1").DrawingObjects(1)) 'TextBox Worksheets("Sheet1").DrawingObjects(1).Text = Format(Now, "hh:mm:ss") Application.OnTime Now + TimeValue("00:00:01"), "時計起動" End Sub Sub 時計停止() S = False End Sub

homma
質問者

お礼

回答ありがとうございました。 おれいの返信が遅れましたことをお詫びします。 VBA初心者ですが頑張ります。 今後ともよろしくお願いいたします。

関連するQ&A