![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
テキストボックスの数値を3桁ごとに区切りたい。
エクセルのユーザーフォームにテキストボックスを1~7まで並べています。
テキストボックス1~6の合計を7に入れるようにしています。
テキストボックスに記入するVBAは以下のように投入しています。
合計は上手く表示されるのですが、3桁ごとに「,」の区切りを入れたいと思っています。
どのように記述したらよいのか、教えていただけないでしょうか。
--------------------------------------
Private Sub TextBox1_AfterUpdate()
Dim i
Dim res
For i = 1 To 6
res = res + Val(Me.Controls("TextBox" & i).Value)
Next i
TextBox7 = res
End Sub
Private Sub TextBox2_AfterUpdate()
Dim i
Dim res
For i = 1 To 6
res = res + Val(Me.Controls("TextBox" & i).Value)
Next i
TextBox7 = res
End Sub
Private Sub TextBox3_AfterUpdate()
Dim i
Dim res
For i = 1 To 6
res = res + Val(Me.Controls("TextBox" & i).Value)
Next i
TextBox7 = res
End Sub
Private Sub TextBox4_AfterUpdate()
Dim i
Dim res
For i = 1 To 6
res = res + Val(Me.Controls("TextBox" & i).Value)
Next i
TextBox7 = res
End Sub
Private Sub TextBox5_AfterUpdate()
Dim i
Dim res
For i = 1 To 6
res = res + Val(Me.Controls("TextBox" & i).Value)
Next i
TextBox7 = res
End Sub
Private Sub TextBox6_AfterUpdate()
Dim i
Dim res
For i = 1 To 6
res = res + Val(Me.Controls("TextBox" & i).Value)
Next i
TextBox7 = res
End Sub
--------------------------------------
#次の文字を書くテキストボックスの情報に加えてみましたが、
合計が狂ってうまくいきませんでした。
TextBox1.Text = Format(TextBox1.Value, "#,##0")
TextBox7.Text = Format(TextBox7.Value, "#,##0")
![「テキストボックスの数値を3桁ごとに区切り」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/f/704383_5497cdd5a7231/M.jpg)
No.2ベストアンサー
- 回答日時:
同じようなコードは纏めてやると修正が容易になりますので
も少し慣れてきたらそのようなコードも覚えましょう。
'----------------------------------
Private Sub TextBox1_AfterUpdate()
Call Gokei(1)
End Sub
Private Sub TextBox2_AfterUpdate()
Call Gokei(2)
End Sub
Private Sub TextBox3_AfterUpdate()
Call Gokei(3)
End Sub
Private Sub TextBox4_AfterUpdate()
Call Gokei(4)
End Sub
Private Sub TextBox5_AfterUpdate()
Call Gokei(5)
End Sub
Private Sub TextBox6_AfterUpdate()
Call Gokei(6)
End Sub
'------ 纏めのコード ----------------
Private Sub Gokei(N)
Dim i As Integer
Dim res As Double
For i = 1 To 6
If IsNumeric(Controls("TextBox" & i)) Then
res = res + CDbl(Controls("TextBox" & i))
End If
Next i
TextBox7 = Format(res, "#,##0")
'入力したTextBox
Controls("TextBox" & N) = Format(Controls("TextBox" & N), "#,##0")
End Sub
'-----------------------------------------------------
以上です。
No.3
- 回答日時:
> res = res + Val(Me.Controls("TextBox" & i).Value)
Val関数と、Format(TextBox1.Value, "#,##0")は、直接、組み合わせが出来ません。一旦、数字を変換しなければなりません。
ずっと同じ質問がつづいているようですが、そろそろ、見極めつけてしまったほうが良いような気がします。
なお、今までの話の様子からして、Userform の起動は、 UserForm1.Show False とした方がよいです。
* UserForm 名は、UserForm1, Class名は、Class1 と、決めてしまっていますから、もし違うなら、書き換えてください。
私は、AfterUpDate ではなく、Enterkey とTab にしました。
'-------------------------------------------
'UserForm モジュール
Dim TxtBoxes As Collection
Dim myClass(6) As Class1
Private Sub Userform_Initialize()
Dim i As Long
Set myForm = Me
Set TxtBoxes = New Collection
For i = 0 To 6
Set myClass(i) = New Class1 '*
Set myClass(i).TxtB = Me.Controls("TextBox" & i + 1)
Next
End Sub
'-------------------------------------------
'Class モジュール (Class1)
Public WithEvents TxtB As MSForms.TextBox 'モジュールの上部
Private Sub TxtB_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim Ret As Long
Dim i As Long
Dim v As Variant
'Enter やTab で計算される
If KeyCode.Value <> 13 And KeyCode.Value <> 9 Then Exit Sub
If IsNumeric(TxtB.Text) Then
TxtB.Text = Format(TxtB.Text, "#,##0")
End If
With myForm
For i = 1 To 6
v = .Controls("TextBox" & i).Value
If IsNumeric(v) Then
Ret = Ret + CDbl(.Controls("TextBox" & i).Value)
End If
Next
.TextBox7.Value = Format$(Ret, "#,##0")
End With
End Sub
'-------------------------------------------
'標準モジュール
Public myForm As UserForm 'モジュールの上部
Sub Test_Click() 'コマンドボタンで起動する場合
UserForm1.Show False '*
End Sub
'-------------------------------------------
No.1
- 回答日時:
サンプル1:
Private Sub TextBox1_Change()
textbox1 = format(textbox1, "#,##0")
End Sub
他のテキストボックス2~6についても同様に作成します。前回みたいにあと5個書いて貰わないと,自分じゃ何も出来ませんは無しの方向で。
サンプル2:(安直)
Private Sub TextBox1_AfterUpdate()
Dim i
Dim res
For i = 1 To 6
res = res + ccur(0 & Me.Controls("TextBox" & i).Value)
Next i
TextBox7 = format(res, "#,##0")
End Sub
同様に他も直します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Visual Basic(VBA) Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法 5 2022/08/17 14:27
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
標準モジュールを削除したい。(...
-
Excel VBAでリンク切れをチェッ...
-
'Range'メソッドは失敗しました
-
Sub Workbook_Open()でユーザー...
-
VBでグローバル変数を宣言するには
-
モジュールの最大数はいくつな...
-
Friend は標準モジュールじゃ宣...
-
マクロで「モジュールの開放」...
-
別シートに罫線がひけない
-
現在アクティブなフォーム名を...
-
モジュール関連図・モジュール...
-
モジュールとは何ですか
-
複数のフォーム間での変数宣言
-
本当にPublicな変数(配列で)
-
モジュールからフォームのボタ...
-
Excelで時刻になったら知らせて...
-
Excel VBAで、ユーザーフォーム...
-
【ExcelVBA】commandButtonをク...
-
VBAで旧字体を異字体に一括で変...
-
エクセルVBAで標準モジュー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
VBでグローバル変数を宣言するには
-
エクセルVBAでシートモジュール...
-
'Range'メソッドは失敗しました
-
グラフのX,Y座標を取得したい
-
VBA This Workbookモジュール...
-
Excel VBA 『Call』で呼び出す...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBAで、ユーザーフォーム...
-
モジュールとクラスの違いって...
-
Excelで時刻になったら知らせて...
-
Access VBA標準モジュールにつ...
-
標準モジュールを削除したい。(...
-
Excel VBA 定義されたプロージ...
-
モジュールとは何ですか
-
ベースモジュールって?
-
acwzlibとは?
おすすめ情報