|
テキストボックスについてとても苦戦してます
テキストボックス内に長文を入力していくのですが、
一行10桁までしか入力できないように制御したいのです。
10桁を超えるを自動的に改行されるといったマクロを組みたいのですが、
どうすればよいのでしょうか?
いろいろ考えてはみたんですが、いまいち方法がわからなくて困ってます
ちなみに今の考えとしては、
行数を取得して、その行数の数によって、IF文を使用して
改行の認識有無をしていく感じにしようとしています
例えば、行数が3行目だったら、
If 行数=3 then
If MyBit = 34 Then
MyText1 = Left(TextBox1.Text, MyBit - 1)
MyText2 = Right(TextBox1.Text, 1)
TextBox1.Text = MyText1 & vbCrLf & MyText2
End If
End If
でも、こうすると、4行目にカーソルがいて、3行目に戻って、入力を追加した場合も、行数は3行目と認識してほしいのですが、
行数は4行目と認識されてしまいます
そこで、テキスト内に今入力した文字の位置を取得できる方法はないのでしょうか?
ちょっと、説明がわかりにくいかもしれないけど、どうかよろしくお願いします
Private Sub TextBox1_Change()
Dim MyBit As Integer
Dim MyText1 As String
Dim MyText2 As String
Dim Kai()
Dim strName As String
Dim A
strName = TextBox1.Text
’テキストボックスのビット数を取得
MyBit = LenB(StrConv(strName, vbFromUnicode))
行数を取得
A = Split(TextBox1.Value, vbCrLf)
’MsgBox "行数" & UBound(A) + 1
行数=UBound(A)+1
If 行数=1 then
If MyBit = 11 Then
MyText1 = Left(TextBox1.Text, MyBit - 1)
MyText2 = Right(TextBox1.Text, 1)
TextBox1.Text = MyText1 & vbCrLf & MyText2
End If
ElseIf 行数=2 then
If MyBit = 23 Then
MyText1 = Left(TextBox1.Text, MyBit - 1)
MyText2 = Right(TextBox1.Text, 1)
TextBox1.Text = MyText1 & vbCrLf & MyText2
End If
ElseIf 行数=3 then
If MyBit = 34 Then
MyText1 = Left(TextBox1.Text, MyBit - 1)
MyText2 = Right(TextBox1.Text, 1)
TextBox1.Text = MyText1 & vbCrLf & MyText2
End If
(以下、同様のマクロ記述が22行目まで続く)
End If
End Sub
|
|