いつもお世話になります。
ユーザーフォーム内のテキストボックス表示ができません。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
ユーザーフォーム上にある「テキストボックス」に小数が入力できない
Excel(エクセル)
-
Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい
Excel(エクセル)
-
-
4
VBAで入力数値について
Visual Basic(VBA)
-
5
ユーザーフォーム内のテキストボックス内の書式設定
Excel(エクセル)
-
6
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
7
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
8
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
9
カンマ区切り
Visual Basic(VBA)
-
10
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
11
【VBA】計算結果に小数点第2位までを表示させる方法
Visual Basic(VBA)
-
12
EXCEL VBAの入力規則で小数点桁数を指定することはできますか?
Excel(エクセル)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
エクセルVBA「スピンボタンで小数を扱う」
Excel(エクセル)
-
16
UserForm1.Showでエラーになります。
工学
-
17
リストボックスの選択解除
Visual Basic(VBA)
-
18
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
19
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
20
ラベルを表示したり非表示にしたりしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PL/SQLでのTO_DATEの時間取得に...
-
VB初心者。小数点以下の表示で...
-
Excel VBA 複数選択したリスト...
-
vbaの繰り返しで求める最大値に...
-
ポインタのプログラムについて
-
テキストボックスのvalueとtext...
-
VBAでWEB上の入力項目に値をい...
-
C# get set
-
ACCESS VBA 画像ファ...
-
値を返さないコード パス
-
Dbtypeって?
-
オブジェクト型の変数同士の値...
-
FlexGridで複数選択したセル、...
-
windowsアプリケーションで小数...
-
VB.NETでコンボボックスの1行目...
-
ハッシュテーブル(連想配列)が...
-
AccessVBA 帳票フォームの非連...
-
VBで電卓のメモリー機能はどの...
-
リストボックス内を検索(VB6.0)
-
範囲が指定されている乱数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
値を返さないコード パス
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
ハッシュテーブル(連想配列)が...
-
textboxとLabelを動的に変更する
-
PL/SQLでのTO_DATEの時間取得に...
-
VB.NETでアクティブなformを知...
-
Excel vba ユーザーフォームテ...
-
マクロで奇数と偶数の値を2か所...
-
DataTableに対するLINQについて
-
【C++/CLI.NET】コンボボックス...
-
[VBA]選択範囲の下から上に処理...
-
範囲が指定されている乱数について
-
[VB.net] DataGridViewのコンボ...
-
変数に代入してある数値を表示...
-
vbscriptを使いexcelを参照して...
おすすめ情報
実際の値は
計算結果「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
があります。