[[20180607223852]] 『テキストボックスの数値変更』(23) ページの最後に飛ぶ

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

 

『テキストボックスの数値変更』(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


まっつわんさん ありがとうございます。
相互の値を同期させる意味はわかりました。
規定の値しか入力できないというところでbefore updateとなっているところが理解できないのですが。
無知な質問で申し訳ありません。よろしくお願いします。
(23) 2018/06/08(金) 08:11

あぁ、
before updateイベントは値が更新される直前にに発生します。
例えば、「テキストボックスに5を入力した。」だけでは発生しません。
そこから、次のテキストボックスあるいはスピンボタンあるいはコマンドボタン等に、
フォーカスが移るときに発生します。
なのでこのタイミングで値が適正かどうかチェックします。
値が更新されるときなので、変わらない時は発生しません。

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


まっつわんさん
わざわざコードまでご指導ありがとうございます。思った通りにできました。本当にありがとうございました。
(23) 2018/06/08(金) 12:52

コメント返信:

[ 一覧(最新更新順) ]


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