[[20170327095103]] 『UserForm上のTEXTBOXの時間表示について』(ada) ページの最後に飛ぶ

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

 

『UserForm上のTEXTBOXの時間表示について』(ada)

例えばUserForm上のTEXTBOXに”17:00”と入力すると
”00:0700”となってしまいます。
17:00と表示させたい場合、どの様にしたら良いでしょうか。

Private Sub 開始時間_change()

    On Error Resume Next
   開始時間.Value = Format$(開始時間.Value, "hh:mm")
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 2つ問題がありますね。

 1.Changeイベントは、1文字入力するたびに発生します。
   例示の入力の場合、1 を入力したとたんに発生します。具合悪いですよね。
   入力が終わり、エンターなりをおしたときに発生する BeforeUpdate や AfterUpdate を使いましょう。
   
   あるいは、TextBox では、『生入力』の 17:00 だけにして、その横にLabelを配置して そこで編集させるという手もあります。

 2.イベント内で、また、このTextBox に値をセットしていますね。
   その瞬間に、またもや イベントが発生(イベント連鎖)して、この処理が再実行されています。
   値のセット前に、イベント再発生を抑止する構えが必要です。

   なお、ユーザーフォームはエクセルではないので、Application.EnableEvents の手当てでは制御できません。

 ★それより、入力が 17:00 なんですよね? で、なぜそれを、hh:mm に編集しなおしたいのですか?
  なにもしなくても hh:mm になっていますよね?
  正しく、hh:mmの形で入力されたかどうかをチェックしたいということですか?

( β) 2017/03/27(月) 10:11


( β)様

ありがとうございます。

確かに、なにもしなくても17:00で入力でき、セルに転記した時も17:00になるのですが

Private Sub UserForm_Initialize()
開始時間.Value = Cells(ActiveCell.Row, 100).Value

で、フォームを再表示した時に”0.708333333333333”と表示されています。
ここを”17:00”と表示させるにはどのようにしたら良いでしょうか。
(ada) 2017/03/27(月) 10:37


 開始時間.Value = Format(Cells(ActiveCell.Row, 100).Value, "hh:nn")
(???) 2017/03/27(月) 10:47

コメント返信:

[ 一覧(最新更新順) ]


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