[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスの数値変更』(23)
テキストボックスに任意の数値が入っていたとして
Private Sub SpinButton1_SpinDown()
TextBox.Value = SpinButton1.Value End Sub とコードを打ち込みました。例えば5と入力されていた場合でも1からしか数値が変更されません。このとき4と表示をしてもらいたいのですがどうしたらいいでしょうか?
< 使用 Excel:unknown、使用 OS:unknown >
Private Sub SpinButton1_Change()
Me.TextBox1.Value = Me.SpinButton1.Value End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.SpinButton1.Value = Me.TextBox1.Value End Sub
あ、ただし、、、、
テキストボックスには数値以外も入力出来ちゃうので、
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
のイベントで、既定の値しか入力出来ないように制御した方がいいと思います。
(まっつわん) 2018/06/07(木) 23:43
Exitイベントも同じようなタイミング(フォーカスが次へ移った時)で発生しますが、
before updateイベントの後に発生します。
そして、値が変わらなくても問答無用で発生します。
あと、ユーザーフォームを閉じるときも発生します。
なので、出来る限り不要な時はイベントを発生させない(イベントの発生を検知しない)ように、
するためにbefore updateイベントのほうが、値のチェックをするタイミングとしては、
より良いだろうということです。
Option Explicit
Private Sub UserForm_Initialize()
With Me.SpinButton1 .Min = 1 .Max = 9 .Value = 1 End With End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim s As String
s = Me.TextBox1.Value
Cancel = True If Not IsNumeric(s) Then Exit Sub With Me.SpinButton1 Select Case CLng(s) Case .Min To .Max Case Else Exit Sub End Select End With
Cancel = False Me.SpinButton1.Value = Me.TextBox1.Value End Sub
Private Sub SpinButton1_Change()
Me.TextBox1.Value = Me.SpinButton1.Value End Sub
(まっつわん) 2018/06/08(金) 10:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.