テキストボックスのカーソル位置を取得しているのですが
TEXT.SelStartだと32768文字目にカーソルがある場合、0が返ってきます。
これを32768で取得したいのですが、取得する方法はあるのでしょうか?
SendMessageのEM_GETSELは使えますか?
普通はそうはならないのですが、
On Error Resume Next
Dim i As Integer
Text1.SelStart = 32768
Text1.SelLength = 1
Text1.SetFocus
i = Text1.SelStart
Debug.Print i
こうすると、i = 0 になりますね。
これは
Dim i As Long
とすれば直ります、何故かは自分で考えてください。
みなさんありがとうございます。
上記補足です。
確認中なのですが、半角の場合は、1234567890・・・5678
の場合に、8が32768文字目だとしたら8の後ろにカーソルがある場合に、32768が返ってきました。
問題は、全角の場合に、1234567890・・・5678
の場合に、0が返ってきます。
On Error Resume Next
dim i as Long
i = Text1.SelStart
とした場合のiの値となります。
>SendMessageのEM_GETSELは使えますか?
EM_GETSELは使用可能です。
引き続き色々試してみます。
とりあえず「EM_GETSEL」はバイト数を返してきますね。
テキストボックスは32K文字以上の文字列を扱うのは向かないかも。(.Textプロパティ参照)
リッチテキストボックスなら32768も返せますよ。
なんとか「EM_GETSEL」にてバイト数にて判断しようと思います。
リッチテキストボックスには、変更できなかったので。
ありがとうございました。
ツイート | ![]() |