- ベストアンサー
Excel VBA のユーザ・フォーム
TEXTBOX とCombBoxの入力エリアへの書式(Ex.¥123,456等)のデータ入力前に設定しておく方法が分かりません。 例えばプロパティの使用で可能なのでしょうか? 可能でしたら、そのプロパティの名称と設定方法をお教えいただきたいのですが!
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「テキスト」ボックスというように、入力表示や結果は文字列(テキスト)で処理されます。 だから「テキストボックス」の書式設定は、設計されていません。 「書式」は、エクセルでは、「数」に関するもので、文字列に対してものは1,2しかなく(@など)、余り役立つものではない。エクセルでは、「日付」も数字なのをご存じか。 (書式は1.数 2.日付 3.文字列について考えることができる。日付はその1つ。) (エクセルの書式はNumberFormatといいます) だから無理難題を言わず、VBAでは諦めるべきと思う。 ーーー ただ疑似的な、突破の方法は、下記ではどうかな。 (1)ユーザーフォームを挿入 (2)そこにテキストボックス1つと、コマンドボタンを1つ設ける。 テキストボックスは1行とし(MultiLineはFalse)、横幅は入力桁数+α分を適当に。 Dim w Private Sub CommandButton1_Click() MsgBox TextBox1.Value TextBox1.Text = "" w = "" End Sub Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) w = w & Val(Chr(KeyCode)) TextBox1.Value = Format(w, "currency") End Sub これで1数字文字を入力するごとに、テキストボックスに、今までに入力した集合数字について、先頭に¥と3桁ごとカンマが入ったものが出る。 コマンドボタンを押すと、最終のそのテキストボックスの窓の文字が表示される。(変数に入れれば、その後使える) TextBox1.Valueでなくて、変数wを使えば「¥」、や「,」なしの数字集合文字列が使える。 あと、入力文字が数字かどうかのチェックを入れるのも必要かと思う(VAL()したものを IsNumeric)でチェック) ー この方法は小生が思いついたもの(WEBから引いてきたものではない)なので、使用者は十分テストして、困ったケースがないか吟味が必要です。 イベント・プロシージュアーというものは、入力者が何をするか判らず、扱いはむつかしいと感じる。 ーー コンボも同じことは考えられると思う。