Microsoft Access 掲示板

短いテキスト型のテキストボックス内で改行するとき / 1

4 コメント
171 views
4 フォロー
1
hatena 2024/07/22 (月) 16:14:37 修正

Enterを押して3行目から4行目に移動するとき、4行目を作らず次のテキストボックスに移動できるようにしたいのですが、実現可能でしょうか?

3行までしか入力できないように制限したいということですね。
実現可能かといえば、可能です。
「キークリック時」のイベントプロシージャにコードを記述することになります。

「Enterを押して3行目から4行目に移動するとき」とのことですが、例えば下記のようなときにはどのような動作になることがご希望ですか。

カーソルがテキストの最後ではなく途中にあるときにEnterを押したとき(例えば、3行入力されていて、カーソル位置が2行目の真ん中でEnterを押す)

貼り付けで4行以上のテキストを貼り付けたとき、あるいは、貼り付けた結果4行以上になるとき。

通報 ...
    • 2

      とりあえず、
      貼り付けの場合は何もしない、
      3行入力してあるときに、Enterキーを押したら次のテキストボックスへ移動するということだとして(カーソルがどこにあっても)、
      下記のコードになります。

      Private Sub テキスト1_KeyDown(KeyCode As Integer, Shift As Integer)
          Dim s As String
          If KeyCode = vbKeyReturn Then
              s = Me.テキスト1.Text
              If Len(s) - Len(Replace(s, vbCrLf, "")) >= 4 Then
                  KeyCode = 0
                  Me.テキスト3.SetFocus
              End If
          End If
      End Sub
      
      3

      回答ありがとうございます。
      実装できたのですが、改行無しで2行や3行になった場合、4行目・5行目を入力することができてしまいます。

      例えば、幅7㎝、高さ1.5cmのテキストボックスにフォントサイズ14だと、文字詰め無しのフォントで1行あたり14文字入力、スクロールなしで3行分表示できるのですが、20文字入力すると6文字分が2行目に行き、入力を進めていくと4行目、5行目にも入力出来てしまいます。

      コード的に、改行("")の個数で判断してるためだと思いますが、解決方法はありますでしょうか。