重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話なります

TextBoxに下記のように文字をセットしようとした際、
何故かSelStartがうまく行かなかったので、ちょっとテストしてみました

標準モジュールでTextBoxに入れる文字をセット
Option Explicit
Public TextMoji As String
Sub test()
TextMoji = "ABCDE"
UserForm2.Show
End Sub

UserForm2でTextBox1に代入
Option Explicit
Sub UserForm_Activate()
TextBox1.Text = TextMoji
End Sub
Private Sub TextBox1_Enter()
With TextBox1
.BackColor = RGB(&H0, &HFF, &HFF)
.SelStart = 0
.SelLength = Len(TextBox1)
End With
Debug.Print "check", TextBox1.Text
End Sub

そうすると、Debug.PrintではTextBox1.Textは何も入っていません
そのあとにtextBox1へTextMojiが代入されるみたいでSelStartが一番後ろになってしまいます
なんで?

そこで、TextBox1_Enterを使わず下記のようにしました
Sub UserForm_Activate()
TextBox1.Text = TextMoji
   With TextBox1
   .BackColor = RGB(&H0, &HFF, &HFF)
   .SelStart = 0
   .SelLength = Len(TextBox1)
  End With
End Sub

ちょっとVBAの動きの順番が違うような気がするので投稿してみました
今更と言われそうですが、分かりましたら教えてください

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (1件)

textbox_Enter はテキストボックスがフォーカスを取得したときのイベント、


textbox_afterupdate を使えば、文字列が入力後に走ると思う。

cursor 位置については、よくわからないので試してみてください。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます
試してみましたが色もカーソルはダメでした
SetFocusもうまく行きません

Textbox1_Enterを使わずに行こうと思っています
ありがとうございました
これからもよろしくお願いいたします

お礼日時:2025/06/17 10:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!