
Excel ユーザーフォームに50個のテキストボックスがあり、50個に入力された数字を足し
リアルタイムに合計を表示したい。
数が多いのでPrivate Sub TextBox1_Changeに計算式をいれるとチラツキます。
Application. ScreenUpdating=Falseを入れてもチラツキます。
クラスモジュールにすると一括でできると調べてたのですがうまくいきません。
教えてください。よろしくお願い申し上げます。
~Class1~
Private Sub Target_Change()
test1
End Sub
~Userform1~
Private ctrl(1 To 5) As New Class1
Private Sub UserForm_Initialize()
~モジュール~
Sub test1()
Dim i As Long
Dim total As Long
For i = 1 To 5
total = UserForm1.Controls("TextBox" & i).Value + total
Next i
End Sub
No.1ベストアンサー
- 回答日時:
クラスのインスタンスにテキストボックスを代入する必要があります。
次の3点の訂正をお試しください。
①Class1に宣言・メソッドを追加
Private WithEvents Target As MSForms.TextBox
Public Sub setControl(tb As MSForms.TextBox)
Set Target = tb
End Sub
②UserForm1のUserForm_Initialize()に処理追加
For i = 1 To 3
ctrl(i).setControl Me.Controls("TextBox" & i)
Next i
③test1()を以下のとおり訂正
Public Sub test1()
Dim il As Integer
Dim total As Integer
Dim val As Integer
For i = 1 To 5
a = UserForm1.Controls("TextBox" & i).Value
If a <> "" Then total = Int(a) + total
Next i
UserForm1.Label1.Caption = total
End Sub
No.3
- 回答日時:
すいません何度も#1です。
4点目の訂正がありました。③「val」は「a」
私の環境で簡易で試したので、他に誤りがあれば、質問者様のコードに合うよう変更してください。
No.2
- 回答日時:
#1です。
私の回答に3点の誤りがありました。
1 ②「To 3」は「To 5」
2 ③「il」は「i」
3 「UserForm1.Label1.Caption = total」は私が試したコードなので任意に変更を
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
VBA テキストボックスの計算
Visual Basic(VBA)
-
VBA テキストボックスで計算
Access(アクセス)
-
-
4
Excel VBA ユーザーフォーム内のラベルにテキストボックスの計算結果を出す方法
Visual Basic(VBA)
-
5
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
6
VBA。複数のChangeイベントをまとめる方法
Visual Basic(VBA)
-
7
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
10
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
11
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
14
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
15
複数のテキストボックスに同じ処理をしたい
Visual Basic(VBA)
-
16
VBAのTextBoxに半角数字のみ入力したい
Visual Basic(VBA)
-
17
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
18
ユーザーフォーム内のテキストボックス内の書式設定
Excel(エクセル)
-
19
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
20
ExcelVBA EnableプロパティがFalseの時に文字の色を変えたくない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
他のモジュールのプロシージャ...
-
VB.NETにて文字列で指定した関...
-
VB.netで、動的な型変換を行い...
-
[VBA] Classから他のClassを呼...
-
用語の意味の違いを教えてくだ...
-
ExcelVBAのコントロールの種類...
-
実行時エラー 438になった時の...
-
VBA シートのボタン名を変更し...
-
クリックイベントなのに、2回ク...
-
eclipseのデバッグ中に変数の値...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
【C#/Java?】try-catchでcatch...
-
Wordテキストコントロールが未...
-
Form_Load と Form_Activate の...
-
VBA ユーザーフォームの Keypre...
-
VC++のコンボボックスの各項目...
-
【マクロ】エラー【#DIV/0!】が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
Excel vbaで複数のテキストボッ...
-
VB.netで、動的な型変換を行い...
-
VB.NETにて文字列で指定した関...
-
他のモジュールのプロシージャ...
-
'StructLayout' の仕様について
-
【JSF】バッキングビーンから別...
-
WPFでCanvas の子要素にアクセ...
-
VBA オブジェクト追加
-
用語の意味の違いを教えてくだ...
-
バウンドプロパティとは?
-
VB6で外部から静的アクセスが可...
-
コンポーネント指向って、どの...
-
C# Process.Start で標準入力
-
オブジェクト指向とは?
-
離れた場所のロールオーバーの...
-
C#でのWebRequestでのPOSTについて
-
実行時エラー 438になった時の...
-
worksheetFunctionクラスのVloo...
おすすめ情報