重要なお知らせ

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

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

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

A 回答 (7件)

こんにちは。

ベタですがこんな感じ?

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

この回答への補足

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

補足日時:2008/07/06 01:56
    • good
    • 0

> テキストボックスに対してキーボードから小数点を打つとカーソルが


> 数字の左に行ってしまい、一番右に行ってくれません・・・

すみませんが、どういう状況か理解できません。当方では、小数点の
入力も特にカーソルが数字の左に行く(?)という現象は確認できません。

#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
    • good
    • 0

先日の電卓の続きでしょうか?



Text1.SelStart で、カーソルの位置が設定できます。
がんばってくださいね。
    • good
    • 0

>フォーカスは常に入力された数字の右側に



フォーカスじゃなくて、カーソルのことでせうね、きっと。

VB6がないのでなんですが、
テキストボックスのGotFocusイベントで、SelStartプロパティを使うのは?

'----------------------------------
Private Sub Text1_GotFocus()
  Text1.SelStart = Len(Text1.Text) + 1
End Sub
'----------------------------------

でどうでしょう。
外しましたらご容赦!
以上。
 
    • good
    • 0

VBAかVBかVBの.NETか6.0かそういうことも書かないで質問するとは・・。


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

この回答への補足

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

補足日時:2008/07/05 23:16
    • good
    • 0

NO.1です。



VBのカテゴリであることを失念していました。

申し訳ありません。
    • good
    • 0

1.コントロールツールボックスを表示します。


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

以上です。

EXCEL2003使用
    • good
    • 0

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