【先着1,000名様!】1,000円分をプレゼント!

エクセルVBAの質問です。
TextBoxに金額を入力してもらうのですが、入力時3桁ごとにコンマが打たれるように表示できないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。



TextBoxのChangeイベントを使うのはどうでしょうか。

Private Sub TextBox1_Change()
TextBox1.Text = Format(TextBox1.Text, "#,##0")
End Sub

計算に使うときはデータ型変換関数を使うといいでしょう。金額と言うことなので小数はないとしてCLngを使うといいでしょう。
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
できました。

お礼日時:2006/09/14 15:05

テキストボックスに入力した値を直にカンマ数字に変換すると単純にうまくいくかどうかわかりませんが、Format関数を使えばできます。


入力した値を他のラベル等に表示するのであれば、Format関数をかけるだけで解決します。

補足として、カンマを含む数字はValをかけるとカンマのところで切られたきがします。よく覚えてませんが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
質問に書いておくべきでしたが、初心者ですので、この説明だけではよくわかりませんでした。

お礼日時:2006/09/14 15:04

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBA テキストボックスに3桁カンマ表示させたい

お世話になります。

お世話になります。

VBAでフォームを作成しました。

”金額”というテキストボックスの数字を下記の様に表示したかったので記述しましたところエラーメッセージが出てしまいます。

Me.金額.Format = "合計:###,###,###,###円"

※エラーメッセージ
「メソッドまたはデータメンバが見つかりません」というエラーが出ています。

どなたかご教授いただけませんでしょうか?
よろしくお願い致します。

環境 Windows XP SP3 Excel2003

Aベストアンサー

テキストボックスの内容をほかに使うのであればテキストボックスに数値だけを表示し、前後にラベルをつけたほうが良いような気がする。 (そのような形式にすると、文字列になって数値処理が面倒になるような気がする。)
表示目的だけなら、textboxのconfirmedのイベントなどで
Me.金額.text = "合計:" & format(Me.金額.text,"###,###,###,###") & "円"
とするとか。

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

QエクセルVBA ユーザーフォームのtextboxの書式設定って?

エクセルでユーザーフォームを作成しています。
金額を入力するTextBoxを作ったのですが、
その表示方法を「,」(カンマ)で桁区切り
で表示さいたいのですが、方法ってありますか?
TextBoxプロパティーを色々見ているのですが、
セルの書式設定みたいなものは無さそうなのですが、
方法があれば、教えていただきたく思います。
宜しくお願いいたします。

Aベストアンサー

こんにちは、

TextBox には書式はありませんから、以下のようにFormat 関数を使います。
テキストボックスの文字は右揃えは、そのプロパティの TextAlign =3 '-fmTextAlignRigh に設定します。


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim str1 As String
If KeyCode = 13 Then
 str1 = TextBox1.Text
 If IsNumeric(str1) Then
  TextBox1.Text = Format$(CLng(str1), "#,##0")
 End If
End If
End Sub

また、その数字を使って計算する場合は、Clng /CDbl で数値に変換します。

Private Sub CommandButton1_Click()
'計算する場合
Dim str1 As Variant
 str1 = TextBox1.Text
 If IsNumeric(str1) Then
 str1 = CLng(str1) * 10  '計算する場合は、Clng で変換
 TextBox2.Text = Format$(CLng(str1), "#,##0")
 End If
End Sub

こんにちは、

TextBox には書式はありませんから、以下のようにFormat 関数を使います。
テキストボックスの文字は右揃えは、そのプロパティの TextAlign =3 '-fmTextAlignRigh に設定します。


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim str1 As String
If KeyCode = 13 Then
 str1 = TextBox1.Text
 If IsNumeric(str1) Then
  TextBox1.Text = Format$(CLng(str1), "#,##0")
 End If
End If
End Sub

また、その数字を使っ...続きを読む

QExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法

Excelのプログラムで、テキストボックスに例えば、「10.00」や「10.50」など小数点第二位まで0であっても表示させる方法はありませんか?
あまり複雑になるようなら特に必要なプログラムではないのですが。

回答よろしくお願いします。

Aベストアンサー

値の元は何処からですか?

自分自身ですか?
値の元が違うなら、
No2さんが答えたように、

TextBox2.Text = Format(TextBox1.Text, ""#."#0")
ですが、自分自身で入力が終わってフォーカスが移動した時などなら

Private Sub TextBox1_LostFocus()
TextBox1.Text = Format(TextBox1.Text, "#.#0")
End Sub

こうすることで、出来ます。

ただし、この #.#0は、
0の場合→ .00 となり
0.567822 → .56 となります。

0の場合→ 0.00
0.567822 → 0.56 としたい場合は、
0.00を指定します。


TextBox1.Text = Format(TextBox1.Text, "0.00")

Qカンマ区切り

VBAのテキストボックスで表示や入力時に、カンマ区切りにするにはどうすればいいのでしょうか?

Aベストアンサー

ははは、タッチの差で的確なお答えが返ってきましたね。


#3のmaruru01さんありがとうございます。
ようは、分かればいいんで…(^^;

>そもそもformat文が何なのか使い方が分かりませんので
FORMAT文とは、表示の際に書式を決めるものです。maruru01さんのソースの中にありますが、"#,##0"とかが書式になります。"\#,###"とすれば数字の先頭に"\"マークがついた形で表示されます。書式について詳しく知りたい場合はヘルプを見てください。エクセルのセルの書式設定とほぼ同じ物です。

QVBAでシートからコンボボックスにデータを設定する方法

VBAにてフォーム起動時にシート内に設定した
値をコンボボックスに取り込みたいのですが・・。
たとえばA列に連続で入力されているデータを
取り込むなど・・。
設定データ数は動的に変化します。

Aベストアンサー

もうほとんど同じですが…

Private Sub UserForm_Initialize()
Dim i As Integer

 ComboBox1.Clear
 For i = 1 To Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row
  ComboBox1.AddItem Worksheets("sheet1").Cells(i, 1).Value
 Next
End Sub

QエクセルVBAでテキストボックスの値の取得と変更について

エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。

環境:WindowsXPでオフィス2002
状況:
エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C)
エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい

試した事:
コントロールを配置したシートに次のマクロ
TEXTBOX_C.Text = "これはコントロールのテキストボックス"
を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。

また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

Aベストアンサー

エクセルを新規に開きました。
そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。
そのBook1から、ファイル-開くで別ブックを開きました。
別ブックのMojule1側に下記を書いて
Sub test02()
MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text
End Sub
を実行すると、Book1のTextBoxに入れた文字列が表示
されました。
がそんな質問ではないのですか。

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Qエクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?

エクセルのVBAでユーザーフォームの中に
テキストボックスとラベルがあります。

ラベルの縦幅とテキストボックスの縦幅は
同じです。(文字1行分くらい)

そのテキストボックスの左隣にラベルを置いて、
項目名的なものを表示させたいと思うのですが
ラベルの値が上に寄っているので、垂直方向に
中央揃えさせたいのですが、設定の仕方が
分からず困っています。

ちなみにエクセルはXPで、VBAは詳しくありません。
詳しくないけど調べながらちょっとずついろいろ
作業しています。

どうぞよろしくお願いします。

Aベストアンサー

文字の上下中央設定は、確かにできませんね。
代案ですが、次のような操作はいかがでしょうか。

1.双方を選択した状態でプロパティを表示し、AutuSize の値を True にする。
2.前回のようにコントロールの位置を上下中央で揃える。
3.各コントロールの長さ(幅)や文字サイズを調整する。

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング