アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。
ユーザーフォーム内のテキストボックス表示ができません。
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」になります。
何がおかしいですか?

よろしくお願い致します。

質問者からの補足コメント

  • 実際の値は
    計算結果「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
    よろしくお願いいたします。

      補足日時:2021/02/08 09:11
  • 実際は?
    計算結果は「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」になります。
    よろしくお願いいたします。

      補足日時:2021/02/08 09:16
  • ①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
    があります。

      補足日時:2021/02/08 09:55

A 回答 (6件)

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を整数型の数値に変えるので、小数点以下が切り捨てられます。
    • good
    • 0
この回答へのお礼

tatsumaru77さん
有難う御座います。
If val <> "" Then totalNP2 = CDbl(val) + totalNP2で表示されました。
そういうことだったのですね。
理解できました。
ご親切に有難う御座いました。

お礼日時:2021/02/09 07:43

No.5です。



Excelは可能なのですね。
この間再現したのVBだったかな?
    • good
    • 0

初級者ですが。



テキストボックスの値はtextなので数値みたいに書式って変えられましたっけ?
スマホなので確認は出来ないので、ミスってたらごめんなさい
    • good
    • 0

こんにちは



>しかし、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から直接値を取得すればすむはず)
    • good
    • 0

こちらで確認すると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となるか確認されては
如何でしょうか。
「Excel vba ユーザーフォームテキ」の回答画像2
    • good
    • 0

実際の値はいくつなのでしょうか。

    • good
    • 0

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

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


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