[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスのSelStartがおかしい?』(田吾作)
こんばんは、よろしくお願いいたします。 テキストボックスのカーソル位置に文字を挿入するコードを作ろうとしています。
カーソル位置を取得するのに、試しに他のテキストボックスにKeyDownイベントを使って 矢印キーを左右にカーソルを動かしてカーソル位置を表示するようにしてみました。
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Me.TextBox2.Value = Me.TextBox1.SelStart End Sub
すると、不思議な現象が起こりました。
たとえば、テキストボックスに「abcde」と入力し、カーソルを移動してみると 文字列の一番右にカーソルがある状態から左に矢印キーでカーソルを移動していき、aとbの間にカーソル があるときは、「2」と表示されます。
今度は、文字列の一番左にカーソルがある状態から右に矢印キーでカーソルを移動していき、aとbの間に カーソルがあるときは「0」と表示されます。
また、文字列の一番右にカーソルがある状態から左に矢印キーでカーソルを移動していき、aの左にカーソル が来たときは「1」と表示され、さらにもう一度左矢印キーを押すと「0」になります。
同じように、文字列の一番左にカーソルがある状態から右に矢印キーでカーソルを移動していき、eの右に カーソルが来たときは「4」と表示され、さらにもう一度右矢印キーを押すと「5」になります。
こういう現象は何故おこるのでしょうか?ご教示お願いいたします。
なお、現在は回避策として、テキストボックスに挿入したい文字列をいったんクリップボードに格納し、 SendKeysメソッドでカーソル位置にCtrl+Vで貼り付けるようにしています。 クリップボードを介しない方法を模索しております。
< 使用 Excel:Excel2007、使用 OS:WindowsVista >
キーダウンイベントだから、移動前の値ておかしくない気がしますが キーアップイベントなら想定通りですか? (稲葉) 2017/06/15(木) 06:54
稲葉さん、ご回答ありがとうございます。
>キーダウンイベントだから、移動前の値ておかしくない気がしますが >キーアップイベントなら想定通りですか?
おっしゃる通りでした。ありがとうございました。 (田吾作) 2017/06/15(木) 12:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.