[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/12(Wed) 15:36
投稿者名:nao
Eメール:
URL :
タイトル:
テキストボックスの入力制限数について
みなさんこんにちは
現在、maxlengthを10に設定したテキストボックスがあるのですが
これは文字数ですよね。
バイト数で10バイト以上入力できないようにしたいのですが
どうすればよろしいでしょうか。
ちなみに、大文字は2バイト、小文字を1バイト
と判断したいです。
どなたか分かる方教えて下さい

投稿時間:2005/01/12(Wed) 15:41
投稿者名:INA
Eメール:
URL :
タイトル:
Re: テキストボックスの入力制限数について
>大文字は2バイト、小文字を1バイト
全角、半角の間違いでしょうか?

len関数とlenB関数が使えませんでしょうか?

投稿時間:2005/01/12(Wed) 15:50
投稿者名:nao
Eメール:
URL :
タイトル:
Re^2: テキストボックスの入力制限数について
もちろんlen,lenbは使えますが、
テキストボックスに入力している時に、10バイトを超えて
入力できないようにしたいのです。
change か keypress のイベントを使用して
入力文字数が超えていないのか、判断するという
意味ですか。

投稿時間:2005/01/12(Wed) 15:51
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: テキストボックスの入力制限数について
複数行表示用のテキストボックスでなければ下記のようにすれば。

Private Sub Text1_Change()
    '半角1バイト換算で10バイトまでの入力制限をする(貼り付けにも対応)
    Call sSetMaxLenB(Text1, 10)
End Sub

Private Sub sSetMaxLenB(ByVal txtBox As TextBox, ByVal CutByt As Integer)
'半角1バイト換算のバイト数での入力制限する
    With txtBox
        If LenB(StrConv(.Text, vbFromUnicode)) > CutByt Then
            '指定のバイトになるまで1文字づつ削除
            .Text = Left$(.Text, Len(.Text) - 1)
            .SelStart = Len(.Text)  'テキストの最後の文字位置に
            .SetFocus               'フォーカスを移動
        End If
    End With
End Sub

投稿時間:2005/01/12(Wed) 16:18
投稿者名:nao
Eメール:
URL :
タイトル:
Re^3: テキストボックスの入力制限数について
返事ありがとうございます。
Left$ と
.SelStart = Len(.Text)  'テキストの最後の文字位置に
上記を行っている意味を、すいませんが教えていただけますでしょうか。
初心者で申し訳ありません。

投稿時間:2005/01/12(Wed) 16:28
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: テキストボックスの入力制限数について
> .SelStart = Len(.Text)  'テキストの最後の文字位置に
> 上記を行っている意味を、すいませんが教えていただけますでしょうか。

見ての通りです。通常入力したらカーソルの位置は文字の最後に
なるかと思いそのようにしているだけで、お好みでどの位置でも
好きな位置に設定するなりして下さい。
(バイト数制限とは直接関係ありません)
こう言った場合、その部分をコメントアウトして試してみれば
どうなるかで解るかと思うのですが、コードを自分で色々試して見て下さい。

投稿時間:2005/01/12(Wed) 21:22
投稿者名:nao
Eメール:
URL :
タイトル:
Re^3: テキストボックスの入力制限数について
思い通りに動きました。
ありがとうございました。


> 複数行表示用のテキストボックスでなければ下記のようにすれば。
>
> Private Sub Text1_Change()
>     '半角1バイト換算で10バイトまでの入力制限をする(貼り付けにも対応)
>     Call sSetMaxLenB(Text1, 10)
> End Sub
>
> Private Sub sSetMaxLenB(ByVal txtBox As TextBox, ByVal CutByt As Integer)
> '半角1バイト換算のバイト数での入力制限する
>     With txtBox
>         If LenB(StrConv(.Text, vbFromUnicode)) > CutByt Then
>             '指定のバイトになるまで1文字づつ削除
>             .Text = Left$(.Text, Len(.Text) - 1)
>             .SelStart = Len(.Text)  'テキストの最後の文字位置に
>             .SetFocus               'フォーカスを移動
>         End If
>     End With
> End Sub

投稿時間:2005/01/12(Wed) 22:36
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: テキストボックスの入力制限数について
実際に使用するなら、じゃんぬねっとさんが紹介されているサンプルの方が
お薦めかも、じゃんぬねっとさんにもお礼を忘れずに・・・・

投稿時間:2005/01/12(Wed) 15:55
投稿者名:じゃんぬねっと
Eメール:
URL :http://jeanne.wankuma.com/
タイトル:
Re: テキストボックスの入力制限数について
> バイト数で10バイト以上入力できないようにしたいのですが

バイト数で制限する方法はググればすぐ出てきますよ。

API ならば、こちらの 14 とか...
hhttp://www5b.biglobe.ne.jp/~yone-ken/VB/TextBox.html

投稿時間:2005/01/13(Thu) 08:31
投稿者名:nao
Eメール:
URL :
タイトル:
Re^2: テキストボックスの入力制限数について
返事ありがとうございます。
今後の参考に使わせていただきます。