- ベストアンサー
ゼロ拡張
「MaxLength」を例えば"5"に設定していたとして 桁数をまず把握させなければいけないと思いますが その部分でつまっています。^^; よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
もっと単純に、 format(10,"00000") こういうのじゃダメですか? 数値チェックが必要ですが。
その他の回答 (6)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
#5さん。張付けされたテキストは? っていうか、質問者は数値チェックを要望してるの? なんか、数値チェックについてになってきているが、気にしないで突っ走ろうw ちなみにAPIでも、数値入力制限というのがあります。サンプルは http://www.vbvbvb.com/jp/gtips/index0701.html の750番です さらに727番にテキストボックスの入力バイト数を制限するというのもあります。 これらを組み合わせても、やはり張付け時に値以外も入ってしまいます。 #6さんの方法 「数値以外の入力を認める。しかし、結果的にはじく」 この方法か、あるいは 「Changeイベントで、文字列のチェックを行い、入力すら認めない」 と言う方法が思いつきます。 あるいはコンポーネントで、MicrosoftMaskEditコントロールを使用するとか?
- pinky23
- ベストアンサー率40% (2/5)
これだけの話かな、とも思いましたが・・・。 ================================= Private Sub Text1_LostFocus() '入力したテキストの数値チェック If IsNumeric(Me.Text1.Text) = True Then '数値だったらMaxLength分の桁数にそろえる Me.Text1.Text = Format(Me.Text1.Text, String$(Me.Text1.MaxLength, "0")) Else 'エラー処理 (文字を消すとかエラーメッセージ出すとか) Me.Text1.Text = "" End If End Sub ================================= まぁ、あとは好みの問題でしょうか。
- BlueRay
- ベストアンサー率45% (204/453)
横から、すいません。 数値チェックです。 Private Sub Text1_KeyPress(KeyAscii As Integer) Select Case Chr(KeyAscii) Case 0 To 9 Case Else KeyAscii = 0 End Select End Sub
- TAGOSAKU7
- ベストアンサー率65% (276/422)
Formatでも良いけど、数値チェックが面倒だったから・・・ あえてそれをしなかったのです。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
Private Sub Form_Load() Text1.Text = "" Text1.MaxLength = 5 End Sub Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text1_LostFocus() Dim strWk As String Dim intLength As Integer strWk = Text1.Text intLength = Text1.MaxLength Text1.Text = Right$(String$(intLength, "0") & strWk, intLength) End Sub
お礼
回答ありがとうございます。 今後、是非参考にさせて頂こうと思います。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
>「MaxLength」を例えば"5"に設定していたとして ふむふむ >桁数をまず把握させなければいけないと思いますが ふむふむ >その部分でつまっています ウッ 意味わかんないっす。 text1.maxlength = 5 とした後に、何がつまっているのでしょう?
補足
すいません、補足します。 例えば「1」と入力したとします。 しかし領域はMaxlength=5なので、それを全て埋めたいの です。「1」ではなく、「00001」としたいのです。もう 少し例をあげると。。。 10→「00010」 100→「00100」 1000→「01000」 というふうに「ゼロ」で足りない桁数を埋めるというわけ です。 よろしくお願いします。
お礼
回答ありがとうございます。 今回は数値チェックなどは必要なくLostFocusの 時点で、ゼロ拡張したかったので、上記のformat 関数を参考にさせて頂きました。 おかげさまで解決いたしました。