• ベストアンサー

テキストボックスのフォーカスについて

テキストボックスの設定としては、右揃えにしてフォーカスが常に一番右に表示させていたいのですが、常に一番右に表示させる方法がわかりません。 なので、分かる方教えていただけないでしょうか? 一番右というのはテキストボックスに数字などが入力されてもフォーカスは常に入力された数字の右側にフォーカスがあるということです。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.6

こんにちは。ベタですがこんな感じ? Private Sub Text1_GotFocus()   Text1.SelStart = Len(Text1.Text) + 1 End Sub ' Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)   If KeyCode = 37 Then KeyCode = 0   Text1.SelStart = Len(Text1.Text) + 1 End Sub ' // マウス操作でカーソルも移動させたくないなら Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)   Text1.SelStart = Len(Text1.Text) + 1 End Sub

teruteru2
質問者

補足

こんな方法があるんですね~知りませんでした。 大体はこの方法でできたのですがテキストボックスに対してキーボードから小数点を打つとカーソルが数字の左に行ってしまい、一番右に行ってくれません・・・ どうしたらよいでしょうか?

その他の回答 (6)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.7

> テキストボックスに対してキーボードから小数点を打つとカーソルが > 数字の左に行ってしまい、一番右に行ってくれません・・・ すみませんが、どういう状況か理解できません。当方では、小数点の 入力も特にカーソルが数字の左に行く(?)という現象は確認できません。 #5 ご回答で気づいたのですが、電卓を作ってたのですね。 現状作成中のものから別案になってしまいますが、私なら数字表示に ラベルを使います。そして、フォームの KeyPreview プロパティーを True にします。カーソルの位置やコントロールのフォーカスを気に する必要はありません。 非常に大雑把ですがこんな感じです。試してみて下さい。 前提: フォームに Label1 を配置 Private Sub Form_Load()   ' // KeyPressなどのキーイベントをすべてフォームが受け取るようにする   Me.KeyPreview = True   ' // 結果表示用ラベルの外観をテキストボックス風に   With Label1     .Caption = ""     .Alignment = 1     .BackColor = RGB(255, 255, 255)     .BorderStyle = 1   End With End Sub Private Sub Form_KeyPress(KeyAscii As Integer)   Dim s As String   s = Chr$(KeyAscii)   Select Case True   Case s = Chr$(8) ' // BackSpace     On Error Resume Next     Label1.Caption = Left$(Label1.Caption, Len(Label1.Caption) - 1)     On Error GoTo 0   Case s Like "[0-9]"     Label1.Caption = Label1.Caption & s   Case s = "."     ' // 小数点は2つ以上は打てないようにする等の処理   Case s = "+"     ' // その他四則演算子の場合の処理   End Select End Sub ' // 00 とか 01 などにならないよう補正する Private Sub Label1_Change()   If Label1.Caption Like "0[0-9]" Then     Label1.Caption = Mid$(Label1.Caption, 2)   End If End Sub

  • emsuja
  • ベストアンサー率50% (1034/2055)
回答No.5

先日の電卓の続きでしょうか? Text1.SelStart で、カーソルの位置が設定できます。 がんばってくださいね。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

>フォーカスは常に入力された数字の右側に フォーカスじゃなくて、カーソルのことでせうね、きっと。 VB6がないのでなんですが、 テキストボックスのGotFocusイベントで、SelStartプロパティを使うのは? '---------------------------------- Private Sub Text1_GotFocus()   Text1.SelStart = Len(Text1.Text) + 1 End Sub '---------------------------------- でどうでしょう。 外しましたらご容赦! 以上。  

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

VBAかVBかVBの.NETか6.0かそういうことも書かないで質問するとは・・。 VBAでもVBと書いて質問するものも居るのが実情だし。 TextのプロパティのAlignment(TextAlign)で解決することか解決しないことなのか、も書いておくべきと思う。

teruteru2
質問者

補足

すみませんでした・・・ VB6.0です。 TextのプロパティのAlignmentで右揃えにしてあるのですが、それだけでは数字が入力されると数字の左側にカーソルが行ってしまうので、それを常に右端から動かないようにしたいのです。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

NO.1です。 VBのカテゴリであることを失念していました。 申し訳ありません。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

1.コントロールツールボックスを表示します。 2.デザインモードをONにします。 3.テキストボックスをクリックします。 4.デザインモードの隣のプロパティを押します。 5.プロパティウィンドウが表示されます。 6.ウィンドウの中にTextAlignがありますので、3-fmTextAlignRight   に変更します。 7.×でウィンドウを閉じます。 8.デザインモードをOFFにします。 以上です。 EXCEL2003使用

関連するQ&A

  • テキストボックスにフォーカスを当てる?

    こんばんは,すみませんよろしくお願いします。 テキストボックスにフォーカスを当てるには,例えば, TextBox1.SetFocus のようにするんだと思うのですが,テキストボックスに初期値が設定されていたときには,上記のようにすると,初期値のテキストの右側に線のようなポインタがテキストコントロール内にでてきます。 しかし,このような状態では,いったん初期値を消さないと,別の値に書き換えることは出来ません。 テキストコントロール内に初期の値として,何らかのテキストが入力されているとき,文字列が選択された状態になっていれば,即,別の値を入力することが出来ますので,ユーザーフォームをshowしたときに,テキストボックス内の初期値 (例えば,「ここに名前を入力してください」などの文字列) を選択した状態にしたいのです。どのようにすれば良いのでしょうか?何度もすみません。

  • テキストボックスのフォーカス移動について

    探してみたのですがわからないので質問します。 初歩的な質問ですみません。タブキーでなくてエンターキーでテキストボックスのフォーカスをいどうさせる方法を教えてください。 テキスト1を入力後エンターキーを押すと次のテキストボックスにいどうさせる方法です。 エクセルのVBではなくVB6での質問です。

  • テキストボックスの文字を右揃えにしましたらカーソルが

    こんぱんは。テキストボックスの文字を右揃えにしましたらカーソルが点滅しなくなりました。具体的には、 <input type='text' class='itiniti' maxlength='5' /> このようにしたものに、 .itiniti{width:50px; text-align:right; } で指定したのですが、右揃えにはなりましたが、そのテキストボックスをクリックしてもカーソルが出現しません。何か入力して、右端以外の文字をクリックしたらカーソルが出現しますが、→キーでカーソルを一番右側までもっていくとまた消えます。 text-alignがleftのときとcenterのときは正常に表示されています。 どなたか右揃えでカーソルがちゃんと表示されない理由がわかるかたいらっしゃいましたらアドバイスお願いいたします。 環境は、IE7です。

    • ベストアンサー
    • HTML
  • VB6のテキストボックスについて

    VB6で作成したプログラムを実行すると、WIN95とWIN98とで違う動作をします。 テキストボックスを右詰め(数字入力のため)に設定しているのですが、 WIN98で実行すると問題なく動作し、 WIN95で実行すると常に左詰めになってしまいます。 常に右詰めになるようにするにはどうしたらいいのでしょうか。

  • サブフォームのテキストボックスにフォーカスを戻す

    Access2010です。 メインフォームにいくつかのテキストボックスやコンボボックスと「登録」ボタンがあり、メインフォームの中には帳票形式のサブフォームがあります。 サブフォームには ・数量 ・単価 ・金額 のテキストボックスがあります。 フォーカスがサブフォームのいずれかのテキストボックスにある状態で、「登録」ボタンをクリックするとYES/NOボタンがある確認画面が表示されます。 そこでNOを選択した場合に、直前までフォーカスがあったサブフォームのテキストボックスへフォーカスを戻すにはどうしたら良いでしょうか?

  • 【Javascript】(テキストボックスの)テキストの末尾にフォーカスを置きたい【フォーム】

    onLoad時にテキストボックスにフォーカスをあてるのですが、 質問タイトルのようなことができません。 前ページからPOSTで持ってきた文字列を入れたテキストボックスなのですが、 BODYタグ部分にonLoad="frm.elm.focus();"と書くと、 そのテキストボックス内の文字列の先頭にフォーカスが行きます。 文字列の続きを入力する項目なので 文字列の末尾にフォーカスを置きたいのですが 方法はありますでしょうか。 ご存知の方いらっしゃいましたらご教示願います。 質問が解りづらかったらすみません。 宜しくお願い致します。

  • エクセルVBA テキストボックスへのセットフォーカスについて

    エクセルVBAでユーザーフォーム内に配置されたテキストボックス への数値の入力時に、指定範囲内になければメッセージボックスで 規格外であることを警告し、その規格外が入力されたテキストボックス を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが どうすればよいのでしょうか? 自分で考えた構文です。 Private Sub TextBox1_AfterUpdate() Dim A As Single A = TextBox1.Text If A < 1.99 Or A > 3.00 Then MsgBox "規格外!!"     TextBox1.Text = "" TextBox1.SetFoucus End If Exit Sub End Sub これですと、次のテキストボックスにフォーカスが移動してしまいます。 次のテキストボックスにフォーカスを移動させずに、規格内の値が 入力されるまでフォーカスを移動させない方法を教えて下さい。 お願い致します。

  • フォーカスがあるテキストボックスに文字を入れる

    GUIでテキストボックスとボタンを作っています。 ボタンをクリックすると、GUIのテキストボックスに書かれた文字がWebブラウザ側にあるテキストボックスへ挿入されるという処理をしたいです。 この処理は、ボタンを押す前にWebブラウザ上のテキストボックスにフォーカスを移し、その後ボタンを押したらフォーカスがある位置に文字を挿入すればできるのではと考えたのですが。。。 フォーカスがある位置に文字を挿入させるやり方がわかりません。 どなたか分かる方教えてください><;

  • テキストボックスにフォーカスをあてる

    いつもお世話になっております。 actionscript3.0にて、テキストボックスにフォーカスを当てる プログラムを作りたいと思っております。 ソースは以下の通りです。 package {   public class hoge extends MovieClip {     public var ipt:TextInput;     public function hoge() {      Selection.setFocus(ipt);     }   } } Selection.setFocus(ipt); でテキストボックスにフォーカスが当たると調べたのですが ↓のエラーメッセージが表示されてしまいます。 「1120: 未定義のプロパティ Selection へのアクセスです。」 何かimportしなくてはいけないのでしょうか。 よろしくご教示お願い申し上げます。

    • ベストアンサー
    • Flash
  • テキストボックスいくつかのうち1つだけフォーカス

    input:focus{background-color:yellow;border-color:red;} はできますが、 テキストボックスいくつかのうち1つだけフォーカス時に色を付ける方法はありますか? よろしくお願いします。

    • ベストアンサー
    • CSS

専門家に質問してみよう