• ベストアンサー

テキストボックスへの文字の入力について

テキストボックスに入力できる文字を半角文字は最大30字、全角文字は最大15字に設定したいのですがどのようにすればできるのでしょうか?知っている方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

2つ方法を提案しておきますね。 こちらがVB的 1.KeyPressイベントで、すでにテキストに入力されている文字のバイト数と、イベントの引数で渡されてくる入力された文字のバイト数を足し、30より大きくなるのであれ ば、0を文字として返すことで入力できなくする。 バイト数を求めるにはStrConvを使ってください。 API使用 2.SendMessageで、テキストボックスにEM_LIMITTEXTメッセージを送る。 です。

nagiha
質問者

お礼

回答どうもありがとうございました。

その他の回答 (3)

  • haporun
  • ベストアンサー率40% (230/562)
回答No.4

VB5以上、WindowsNT以降では、半角と全角という概念が薄れています。 半角も内部で2バイトとして扱われるようになってしまったからです。 プロポーショナルフォントの登場で、半角文字が全角文字の半分の幅を持たなくなったのにも起因します。 これからは半角か全角かに依存するプログラムを作ることは、推奨されません。

nagiha
質問者

お礼

回答どうもありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 全角と半角で分けるとなると、MaxLengthプロパティも使えなさそうです。 従って、テキストボックスのExitイベントか、LostFocusイベントに以下のように書くのはどうでしょう。 If LenB(StrConv(Text1.Text, vbFromUnicode)) > 30 Then   Msgbox "文字数オーバー"   With Text1     .SetFocus     .SelStart = 0     .SelLength = Len(.Text)   End With   Exit Sub End If ちなみにこの場合は、半角文字を1文字=1、全角文字を1文字=2として文字数を数えて、全体で30を越えたらメッセージを出すようになっています。 では。

nagiha
質問者

お礼

回答どうもありがとうございました。

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.1

テキストボックスのプロパティ「MaxLength」に30と設定する。

nagiha
質問者

お礼

回答どうもありがとうございました。

nagiha
質問者

補足

すいません。MaxLengthを使うと半角文字でも30字入ってしまうのでそれ以外の方法でありませんか。

関連するQ&A