
お世話になります。初心者ですみません。。
ユーザーフォームに数量・金額のテキストボックスがあります。
数量のテキストボックスの小計は出すことが出来たのですが、
金額の小計を出すことが出来ません。。
色々なHPで見たところ金額のテキストボックスにあらかじめ
TextBox金額1.Value = Format(TextBox金額1.Value, "##,##0")
と入れているからなのかな?と思うのですが、
この表示形式を崩さずに最下段の黒太字にある小計欄に金額小計を出したいです。
よろしくお願いします。

No.5ベストアンサー
- 回答日時:
変更1.
Private Sub TextBox金額1_AfterUpdate()
Private Sub TextBox金額2_AfterUpdate()
Private Sub TextBox金額3_AfterUpdate()
を以下のように変えてください。
Private Sub TextBox金額1_AfterUpdate()
Call set_shokei
End Sub
Private Sub TextBox金額2_AfterUpdate()
Call set_shokei
End Sub
Private Sub TextBox金額3_AfterUpdate()
Call set_shokei
End Sub
変更2.
そして、いかのプロシージャを追加してください。
Private Sub set_shokei()
Dim total As Long: total = 0
If IsNumeric(TextBox金額1.Value) Then total = total + CLng(TextBox金額1.Value)
If IsNumeric(TextBox金額2.Value) Then total = total + CLng(TextBox金額2.Value)
If IsNumeric(TextBox金額3.Value) Then total = total + CLng(TextBox金額3.Value)
Label金額計 = total
End Sub
本当に何度もお世話になりました!
もっと自身でも勉強していきたいと思います!
またお世話になることもあるかもしれませんが、
その際はどうぞよろしくお願いいたします。
No.4
- 回答日時:
横から失礼します
TextBox?金額が数値に出来ない文字または空白の場合
CLngはエラーになります。
1つまたは複数の TextBox?で空白や文字を無視する場合、
条件により一旦変数に値を代入して最後にラベルに出力するのが容易です
ちなみにコントロールオブジェクトを扱う時は面倒でもプロパティの省略は避けた方が良いですね
Dim i As Long, subtotal As Long
For i = 1 To 3
If IsNumeric(Me.Controls("TextBox金額" & i).Value) Then
subtotal = subtotal + CLng(Me.Controls("TextBox金額" & i).Value)
End If
Next
If subtotal <> 0 Then
label金額計.Caption = Format(subtotal, "##,##0")
Else
label金額計.Caption = ""
End If
End Sub
回答投稿時に確認しましたら、該当部分についてすでに回答されていましたが、参考コードを書いたので投稿します
BAはいりません
No.3
- 回答日時:
>黄色いエラーが出てしまいました。
数値以外の値を入力すると、「型が一致しません (エラー 13)」
のエラーが発生します。(a,b,c等)
数値のみ入力する前提での回答でしたので、
数字以外が入力されるなら、まず、入力データのフォーマットチェックが必要になります。
If IsNumeric(TextBox金額1.Value) = False Then
MsgBox ("金額が不正")
Exit Sub
End If
のチェックを入れる必要があります。(金額2,3も同様)
No.2
- 回答日時:
Val(TextBox金額1.Value) ではなく
CLng(TextBox金額1.Value)
を使ってください。
Valはカンマがあるとギブアップします。
CLngはカンマをスキップして処理します。
No.1
- 回答日時:
こんにちは
ご質問のタイトルには「ラベル」となっていて、本文は「テキストボックス」となっていますが、どちらなんでしょうね?
添付図の見た目からすると、ラベルっぽいですけれど・・
いずれにしろ、「小計」は計算できているものとして、対象のコントロールにフォーマット指定のテキストを表示するようにすれば宜しいかと。
例えば、表示対象がラベルなら、
対象のラベル.Caption = Format(小計値, "#,##0")
といった要領です。
テキストボックスなら、
対象のテキストボックス.Text = Format(小計値, "#,##0")
といった感じ。
ご回答ありがとうございました。
初めての投稿だったので回答がつくか不安でしたが
早々とご回答いただけて嬉しかったです。
また何かありましたらよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA ユーザーフォーム内のラベルにテキストボックスの計算結果を出す方法 5 2022/08/18 11:20
- Excel(エクセル) 隣り合っていないセルを まとめて税込表示したい 8 2022/09/25 14:32
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- 財務・会計・経理 【仕訳】集計されて引かれる販売手数料について 5 2023/04/26 15:32
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Excel(エクセル) SUBTOTAL SUMIF?? 2 2023/03/16 11:25
- スーパー・コンビニ 近所のスーパーでの精算時の話です 14 2023/01/03 10:28
- 相続税・贈与税 集金方法について 3 2023/01/14 19:04
- Excel(エクセル) Excel2016 行間を詰めたい&同じカテゴリなら上位2つだけを表示したい 5 2022/06/03 12:19
- 所得税 確定申告の収入金額欄、源泉徴収額の記入方法について 1 2023/03/12 23:03
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBA ユーザーフォーム内のラベルにテキストボックスの計算結果を出す方法
Visual Basic(VBA)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
-
4
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
5
userFormに貼り付けたLabelを変数に
Visual Basic(VBA)
-
6
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
7
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
8
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
11
エクセルVBA ユーザーフォームのtextboxの書式設定って?
Excel(エクセル)
-
12
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
13
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
14
Excel VBAのフォーム_ラベルの縦位置
その他(パソコン・スマホ・電化製品)
-
15
VBA テキストボックスに3桁カンマ表示させたい
その他(Microsoft Office)
-
16
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
17
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
18
excel vbaでユーザーフォームに線を書く
Excel(エクセル)
-
19
UserForm1.Showでエラーになります。
工学
-
20
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# DataGridView特定セルの入力...
-
VBAについての質問です。 VBAに...
-
ExcelVBA EnableプロパティがF...
-
タイピングゲーム作成の基本。
-
アクセスのデザイン(初心者です)
-
ラベル内の文字列にHTMLリンク...
-
VBマクロの非表示方法
-
Vba テキストボックス文字を右...
-
VBで、TextBoxの反転色を変更し...
-
vbaを使ってグーグル検索をしたい
-
VB6.0 国際化対応について
-
Accessのパスワードキャラクタ...
-
Excel VBA ユーザーフォーム内...
-
ACCESSのVisibleについて
-
EXCELのコントロール ツールボ...
-
ラベルの文字列の長さが変わっ...
-
VBA(エクセル)で自動的にボタン...
-
worksheetFunctionクラスのVloo...
-
実行時エラー 438になった時の...
-
「Columns("A:C")」の列文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ウォッチ式の文字数制限について
-
eclipseのデバッグ中に変数の値...
-
ラベルの文字列の長さが変わっ...
-
Vba テキストボックス文字を右...
-
VisualStudioのプロパティが表...
-
ラベル内の文字(Caption)を縦...
-
ラベルを表示したり非表示にし...
-
ExcelVBA EnableプロパティがF...
-
ラベルのスクロール(VB)
-
三菱タッチパネル小数点以下表...
-
Excel VBA ユーザーフォーム内...
-
ListViewでの行全体の選択
-
Notepad++のコメントの色を変え...
-
VBA:ユーザフォームのラベルの...
-
VB.NETでラベルの大きさってど...
-
ToolStripコントロールのLocat...
-
ACCESSのラベル内データに下線...
-
C# DataGridView特定セルの入力...
-
VBAでMultiPageの色の設定方法は?
-
ダイアログ属性の変更
おすすめ情報
ご回答ありがとうございます。
大変失礼しました。
数量・金額それぞれ縦3つのテキストボックスの小計をラベルに出したいです。
Private Sub TextBox金額1_AfterUpdate()
label金額計 = Val(TextBox金額1.Value) + Val(TextBox金額2.Value) + Val(TextBox金額3.Value)
End Sub
Private Sub TextBox金額2_AfterUpdate()
・
・
・
としていたのですが、カンマ前までしか計算されていないようでした。。
教えていただいた方法でやってみます!
ご回答ありがとうございます。
Private Sub TextBox金額1_AfterUpdate()
label金額計 = CLng(TextBox金額1.Value) + CLng(TextBox金額2.Value) + CLng(TextBox金額3.Value)
End Sub
としてみたのですが、黄色いエラーが出てしまいました。。
型が一致しません (エラー 13)と出たため、ヘルプを見てみたのですがどうしたら良いでしょうか?
身の丈に合わないことをやろうとしていること自体が申し訳なくなってきました。。
すみませんが、もう少しおつきあいいただけると嬉しいです。
よろしくお願いします。
本当に何度もお手間をおかけして申し訳ないです。。
色々なHPを見て理解もせずコピペしたためご迷惑をおかけしています。。
Private Sub TextBox金額1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9]" Then
KeyAscii = 0
End If
End Sub
Private Sub TextBox金額1_Change()
TextBox金額1.Value = Format(TextBox金額1.Value, "##,##0")
End Sub
の2つが入っています。
数字のみ、3桁区切りの表示、label金額1にTextBox1~3が可能なコードを最初からご教示いただけますでしょうか。。本当にすみません。