[[20230418195323]] 『ブックを開いたときのUserFormの状態について』(ひな) ページの最後に飛ぶ

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

 

『ブックを開いたときのUserFormの状態について』(ひな)

ブックを開いたときにUserFormを出しています。
UserFormの中にあるTextBoxについて困っています。
現状、TextBoxにカーソルを置いたら、文字が入力ができるようになっていて、
TextBoxでないところにカーソルがいくと、「検索ワードを入力してください」
となります。

本当は、ブックを開いてUserFormが出たとき(カーソルがどこにも置かれていないとき)に、「検索ワードを入力してください」とだしたいのですが、
今は、いったんどこかにカーソルをおかないと、出てきません。

−−−
Private Sub TextBox1_Enter()
TextBox1.Value = ""
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value = "" Then TextBox1.Value = "検索ワードを入力してください"
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 Private Sub UserForm_Initialize()
    TextBox1.Value = "検索ワードを入力してください"
 End Sub

こんなのはどうですか
(火災報知器) 2023/04/18(火) 20:05:29


返信をありがとうございます。

Initializeのところは、以下のものを入れておりまして
頂いたコードのTextBox1.Value = "検索ワードを入力してください"を
追加したのですが、でてきませんでした、入れる場所がちがいますでしょうか

Private Sub UserForm_Initialize()

    Dim dblX As Double, dblY As Double
    Dim ck As Boolean
    With ActiveWindow
        dblX = .PointsToScreenPixelsX(0) / 96 * 72 + Range("A1").Left * .Zoom / 100
        dblY = .PointsToScreenPixelsY(0) / 96 * 72 + Range("A1").Top * .Zoom / 100
    End With
 With TextBox1
TextBox1.Value = "検索ワードを入力してください"
.ForeColor = RGB(192, 192, 192)
        .IMEMode = fmIMEModeHiragana
        TextBox1.SetFocus
End With
ck = False
End Sub
(ひな) 2023/04/19(水) 07:14:31

あまりと言うかほとんど分かっていないみたいなので
誰かが作った物をコピペしただけの物と解る。

http://officetanaka.net/excel/vba/beginner/16.htm
https://excel-ubara.com/excelvba1/EXCELVBA351.html
(シンジ) 2023/04/19(水) 09:04:55


もしかしたらTextBox1のTabIndexが0になっていて
UserFormを表示したときにTextBox1_Enterが働いてしまっているのかもしれません。

TextBox1のTabIndexプロパティを1以上に変更するとどうなるでしょうか。
(火災報知器) 2023/04/19(水) 09:24:55


 なのですが、文脈からして先頭ですよねこりゃ。 (だったら尚更SetFocus要らん気もしますが...)

 初回のEnterイベントだけ不発になる様に仕組むか...

    Private Sub TextBox1_Enter()
        Static Flg As Boolean
        If Flg Then TextBox1.Value = ""
        Flg = True
    End Sub

 あーでもTextBox1内でキャレットの位置が [検索ワードを入力してくださいI  ]
                                                                     ↑こんな感じだと
                                                                       かえって面倒じゃないですか?
 たとえば↓こんな感じ?

     Private Sub UserForm_Initialize()
         With TextBox1
            .Text = "検索ワードを入力してください"
            .SelStart = 0
            .SelLength = .TextLength
            .IMEMode = fmIMEModeHiragana
        End With
    End Sub
    Private Sub TextBox1_Enter()
        Static Flg As Boolean
        If Flg Then
            TextBox1.ForeColor = &H80000008
            TextBox1.Value = ""
        End If
        Flg = True
    End Sub
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If TextBox1.Value = "" Or TextBox1.Value = "検索ワードを入力してください" Then
            TextBox1.ForeColor = RGB(192, 192, 192)
            TextBox1.Value = "検索ワードを入力してください"
        End If
    End Sub

(白茶) 2023/04/19(水) 09:27:48


テキストボックスと同じ位置に「検索ワードを入力してください」というCaptionのLabelを置いて
Enable=False

 Private Sub TextBox1_Change()
    Label1.Visible = (TextBox1.Value = "")
 End Sub

たとえばこんな風にするとか
(ただしEnable=Falseの副作用で淡色表示になります)
(火災報知器) 2023/04/19(水) 09:58:54


>追加したのですが、でてきませんでした、
ユーザーフォームにテキストボックスを張り付けて試してみましたけど
指定した色で「"検索ワードを入力してください"」と表示されカーソルも末尾に点滅して出ましたよ。
(ちか) 2023/04/19(水) 10:08:52

コメント返信:

[ 一覧(最新更新順) ]


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