Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3011 / 13644 ツリー ←次へ | 前へ→

【64792】Textboxの行数の固定 亜矢 10/3/14(日) 13:35 質問[未読]
【64793】Re:Textboxの行数の固定 よろずや 10/3/14(日) 14:09 回答[未読]
【64794】Re:Textboxの行数の固定 亜矢 10/3/14(日) 14:33 質問[未読]
【64795】Re:Textboxの行数の固定 ichinose 10/3/14(日) 15:12 回答[未読]
【64796】Re:Textboxの行数の固定 亜矢 10/3/14(日) 15:32 お礼[未読]
【64797】Re:Textboxの行数の固定 ichinose 10/3/14(日) 15:48 回答[未読]
【64798】Re:Textboxの行数の固定 よろずや 10/3/14(日) 15:53 発言[未読]
【64799】Re:Textboxの行数の固定 よろずや 10/3/14(日) 15:57 回答[未読]
【64800】Re:Textboxの行数の固定 よろずや 10/3/14(日) 16:00 回答[未読]

【64792】Textboxの行数の固定
質問  亜矢  - 10/3/14(日) 13:35 -

引用なし
パスワード
   よろしくお願いします。
Textboxの行数を指定行数しか入力できないようにしたいと思います。
TextboxのプロパティのMultLineはTrueにしています。
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Me.TextBox3.LineCount = 3 Then
  MsgBox "3行目には入力できません"
End If
End Sub
 上記の例だと3行目に入ってからでないとメッセージがでませんので、
3行目に文字が入力されてしまいますので、後でそれを消さなければ
なりません。
 3行目にならない方法を教えていただきたいと思います。

【64793】Re:Textboxの行数の固定
回答  よろずや  - 10/3/14(日) 14:09 -

引用なし
パスワード
   Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Me.TextBox3.LineCount = 2 And KeyCode = vbKeyReturn Then
  MsgBox "3行目には入力できません"
  KeyCode = 0
End If
End Sub

【64794】Re:Textboxの行数の固定
質問  亜矢  - 10/3/14(日) 14:33 -

引用なし
パスワード
   ▼よろずや さん:
早速のご指導ありがとうございました。
確認しました。最後にリターンキーを押さないとメッセージが出ないようです。
文字を入力していてその時点で3行目になった場合にはメッセージがでないので
それが対応できる方法を教えていただきたいと思います。よろしくお願いします。
>Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
>If Me.TextBox3.LineCount = 2 And KeyCode = vbKeyReturn Then
>  MsgBox "3行目には入力できません"
>  KeyCode = 0
>End If
>End Sub

【64795】Re:Textboxの行数の固定
回答  ichinose  - 10/3/14(日) 15:12 -

引用なし
パスワード
   こんにちは。

Private Sub TextBox1_Change()
  If Me.TextBox1.LineCount = 3 Then
    If Mid(TextBox1.Text, Len(TextBox1.Text) - 1, 2) = vbCrLf Then
     TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 2)
    Else
     TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 1)
    End If
    MsgBox "3行目には入力できません"
  End If
End Sub

TextBox1で試したので TextBox3に直して確認してみてください。

【64796】Re:Textboxの行数の固定
お礼  亜矢  - 10/3/14(日) 15:32 -

引用なし
パスワード
   ▼ichinose さん:
>こんにちは。
>
>Private Sub TextBox1_Change()
>  If Me.TextBox1.LineCount = 3 Then
>    If Mid(TextBox1.Text, Len(TextBox1.Text) - 1, 2) = vbCrLf Then
>     TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 2)
>    Else
>     TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 1)
>    End If
>    MsgBox "3行目には入力できません"
>  End If
>End Sub
>
>TextBox1で試したので TextBox3に直して確認してみてください。
ありがとうございました。解決しました。

【64797】Re:Textboxの行数の固定
回答  ichinose  - 10/3/14(日) 15:48 -

引用なし
パスワード
   Private stopev As Boolean
Private Sub TextBox1_Change()
  If stopev = False Then
    If Me.TextBox1.LineCount >= 3 Then
     stopev = True
     Do While TextBox1.LineCount >= 3
       If Mid(TextBox1.Text, Len(TextBox1.Text) - 1, 2) = vbCrLf Then
        TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 2)
       Else
        TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 1)
       End If
     Loop
     stopev = False
     MsgBox "3行目には入力できません"
    End If
  End If
End Sub


こうしないと駄目ですね!!

前回コードだと

aaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaa

と2行目分まで入力した後、漢字モードで あああああああああああああ
なんて入力すると何回もエラーメッセージが表示されてしまいます

【64798】Re:Textboxの行数の固定
発言  よろずや  - 10/3/14(日) 15:53 -

引用なし
パスワード
   沢山入力後、先頭に戻ってEnterキーを押すと大変なことに。
>Private Sub TextBox1_Change()
>  If Me.TextBox1.LineCount = 3 Then
>    If Mid(TextBox1.Text, Len(TextBox1.Text) - 1, 2) = vbCrLf Then
>     TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 2)
>    Else
>     TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 1)
>    End If
>    MsgBox "3行目には入力できません"
>  End If
>End Sub

【64799】Re:Textboxの行数の固定
回答  よろずや  - 10/3/14(日) 15:57 -

引用なし
パスワード
   Private Sub TextBox3_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Static PrvText As String
If Me.TextBox3.LineCount = 3 Then
  Me.TextBox3.Text = PrvText
  MsgBox "3行目には入力できません"
End If
PrvText = Me.TextBox3.Text
End Sub

【64800】Re:Textboxの行数の固定
回答  よろずや  - 10/3/14(日) 16:00 -

引用なし
パスワード
   '改定
Private Sub TextBox3_Change()
Static PrvText As String
If Me.TextBox3.LineCount >= 3 Then
  Me.TextBox3.Text = PrvText
  MsgBox "3行目には入力できません"
End If
PrvText = Me.TextBox3.Text
End Sub

3011 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free