
いつもお世話になります。
ユーザーフォーム内のテキストボックス表示ができません。
Public Sub ClassNP2W()
Dim j As Integer
Dim totalNP2 As Double
Dim val As String
With UserForm2
For j = 131 To 156
val = .Controls("TextBox" & j).Value
' MsgBox val
If val <> "" Then totalNP2 = Int(val) + totalNP2
Next j
.TextBox15.Value = totalNP2
.TextBox15.Text = Format(.TextBox15.Text, "0.0")
End With
End Sub
Textbox15は「37.5」の表示がしたいのですが「37.0」になります。
何がおかしいですか?
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
totalNP2の値が37.5なのにテキストボックスに表示したら37.0になった
ということではなく、計算上、totalNP2の値は37.5になるはずなのに、
37.0になっているということですね。
If val <> "" Then totalNP2 = Int(val) + totalNP2
を
If val <> "" Then totalNP2 = CDbl(val) + totalNP2
に変えてください。
Int(val)は、valを整数型の数値に変えるので、小数点以下が切り捨てられます。
tatsumaru77さん
有難う御座います。
If val <> "" Then totalNP2 = CDbl(val) + totalNP2で表示されました。
そういうことだったのですね。
理解できました。
ご親切に有難う御座いました。
No.4
- 回答日時:
こんにちは
>しかし、131~156まで足し算すると 「37.5」ではなく、「37.0」になり
他の方が「確認してみては」と指摘なさっているのは、変数totalNP2の値のことで、質問者様が別途計算した値のことではありません。
すでに、No3で指摘されているように、合計計算の際に
totalNP2 = Int(val) + totalNP2
として、整数化しているので、ご提示のコードの中では、totalNP2 は整数値になっているはずと思われます。
ですので、少数以下何桁で表示しようとも、端数は出てこないはず。
(第三者から見ると、Intで意図的に整数化しているとしか読めませんけれど)
ついでながら、
>.TextBox15.Value = totalNP2
>.TextBox15.Text = Format(.TextBox15.Text, "0.0")
わざわざ、二度手間をかけて一桁表示にしているのも謎です。
(totalNP2から直接値を取得すればすむはず)
No.2
- 回答日時:
こちらで確認すると37.5と表示されてます。
Private Sub CommandButton1_Click()
Dim Tal As Double
Tal = 37.5
TextBox1.Value = Tal
TextBox1.Text = Format(TextBox1.Text, "0.0")
End Sub
totalNP2の値をdebug.print してみるか
.TextBox15.Value = totalNP2の直前に
totalNP2=37.5
を強制的に埋め込んで、それでも37.0となるか確認されては
如何でしょうか。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
ユーザーフォーム上にある「テキストボックス」に小数が入力できない
Excel(エクセル)
-
Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい
Excel(エクセル)
-
-
4
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
5
ユーザーフォーム内のテキストボックス内の書式設定
Excel(エクセル)
-
6
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
Excel VBA ユーザーフォーム内のラベルにテキストボックスの計算結果を出す方法
Visual Basic(VBA)
-
9
VBA テキストボックスで計算
Access(アクセス)
-
10
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
11
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
-
12
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
13
【エクセル】複数のTextBoxに共通するChangeイベントを簡潔に書きたい
Excel(エクセル)
-
14
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
15
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
16
Vba テキストボックス文字を右端から配置していく方法
Visual Basic(VBA)
-
17
VBA:小数点以下の数字を取得できる関数は?
Visual Basic(VBA)
-
18
ユーザーフォームのコピー?
Excel(エクセル)
-
19
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
20
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#の質問です
-
テキストボックスのvalueとtext...
-
【C++/CLI.NET】コンボボックス...
-
VBA ドロップダウンリストを残...
-
値を返さないコード パス
-
VB.NETでコンボボックスの1行目...
-
VB.netでRGB関数を使うには
-
VB.NETでアクティブなformを知...
-
VBAでWEB上の入力項目に値をい...
-
vbscriptを使いexcelを参照して...
-
テキストボックスの設定。
-
【ASP.NET】 DataTextFieldの値...
-
Excel VBAのリストボックスの値...
-
シーケンサで最小値を保持する
-
プロシージャの呼び出し、また...
-
Excel VBA 複数選択したリスト...
-
VB初心者。小数点以下の表示で...
-
C言語 関数のパラメータがわか...
-
VBプログラム エラーが出ます
-
ASP.NET ドロップダウンリスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
シーケンサで最小値を保持する
-
VBA ドロップダウンリストを残...
-
Excel VBAのリストボックスの値...
-
マクロで奇数と偶数の値を2か所...
-
値を返さないコード パス
-
C#の質問です
-
VB.NETでコンボボックスの1行目...
-
VB初心者。小数点以下の表示で...
-
変数に代入してある数値を表示...
-
変数名の取得
-
PL/SQLでのTO_DATEの時間取得に...
-
マクロ 特定のセル値のみクリ...
-
ユーザーフォームのテキストボ...
-
Excel VBA 複数選択したリスト...
-
VB.NETのスクロールバーコント...
-
コンボボックスに固定値をセッ...
-
vb6のVSFlexGridで選択行、列の...
-
windowsアプリケーションで小数...
-
textboxとLabelを動的に変更する
おすすめ情報
実際の値は
計算結果「37.5」です。
Textbox には 「37.0」と表示されます。
Private Sub TextBox103_Change()
Tal = val(.TextBox75.Value) * val(.TextBox103.Value)
.TextBox131.Value = Tal
.TextBox131.Text = Format(.TextBox131.Text, "0.0")
End Sub
よろしくお願いいたします。
実際は?
計算結果は「37.5」になります。
Tal = val(.TextBox75.Value) * val(.TextBox103.Value)
.TextBox131.Value = Tal
.TextBox131.Text = Format(.TextBox131.Text, "0.0")
しかし、131~156まで足し算すると 「37.5」ではなく、「37.0」になります。
よろしくお願いいたします。
①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
があります。