[[20170615011622]] 『テキストボックスのSelStartがおかしい?』(田吾作) ページの最後に飛ぶ

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

 

『テキストボックスの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.