
何度もすみません。。
https://oshiete.goo.ne.jp/qa/13099267.html
で大変お世話になった者です。
回答くださった皆様のおかげで、無事小計を出すことが出来ました。
自分なりに調べ、次なる課題にチャレンジしているのですが早くも壁にぶつかり恐縮です。。
Textbox金額1~6まであり、1~3が仕入金額、4~6が売上金額となっています。
その仕入と売上の利益と利益率をラベルに表示したいです。
label利益1に TextBox4ーTextBox1
label利益2に TextBox5ーTextBox2
label利益3に TextBox6ーTextBox3
label利益率1に label利益1/TextBox4,"#.0%"
label利益率2に label利益2/TextBox5,"#.0%"
label利益率3に label利益3/TextBox6,"#.0%"
何度もお手数をおかけして申し訳ございません。。
どうぞよろしくお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
あー。
Textbox の IME モードを設定しといた方がいいかもですね。
#4に追加で。
Private Sub UserForm_Initialize()
TextBox1.IMEMode = fmIMEModeDisable
TextBox2.IMEMode = fmIMEModeDisable
TextBox3.IMEMode = fmIMEModeDisable
TextBox4.IMEMode = fmIMEModeDisable
TextBox5.IMEMode = fmIMEModeDisable
TextBox6.IMEMode = fmIMEModeDisable
End Sub
No.4
- 回答日時:
こんばんは。
前回ご質問の件含めてのサンプル。
1. 数字以外は入力できない(コピペも不可)様にしてます。
2. \マーク付きで数字をフォーマットしてます。
入力コントロールが6個程度、かつVBAビギナー(もう少し上かも)向けなのでベタで書きました。これ以上入力コントロールが増える様ならクラスモジュールを使ってイベントの共通化を行います。中級ぐらいのスキルが必要。
'↓ 以下 Userform1 にコピペ
'
Private Sub TextBox1_Change()
Call FormatNum(TextBox1)
Call calc
End Sub
Private Sub TextBox2_Change()
Call FormatNum(TextBox2)
Call calc
End Sub
Private Sub TextBox3_Change()
Call FormatNum(TextBox3)
Call calc
End Sub
Private Sub TextBox4_Change()
Call FormatNum(TextBox4)
Call calc
End Sub
Private Sub TextBox5_Change()
Call FormatNum(TextBox5)
Call calc
End Sub
Private Sub TextBox6_Change()
Call FormatNum(TextBox6)
Call calc
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call KeyInputNumOnly(KeyCode)
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call KeyInputNumOnly(KeyCode)
End Sub
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call KeyInputNumOnly(KeyCode)
End Sub
Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call KeyInputNumOnly(KeyCode)
End Sub
Private Sub TextBox5_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call KeyInputNumOnly(KeyCode)
End Sub
Private Sub TextBox6_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call KeyInputNumOnly(KeyCode)
End Sub
Private Sub calc()
'利益額の計算 売上-仕入
label利益1.Caption = Format$(NZ(TextBox4.Value) - NZ(TextBox1.Value), "\\#,##0")
label利益2.Caption = Format$(NZ(TextBox5.Value) - NZ(TextBox2.Value), "\\#,##0")
label利益3.Caption = Format$(NZ(TextBox6.Value) - NZ(TextBox3.Value), "\\#,##0")
On Error Resume Next '簡易的 0除算の例外処理
label利益率1.Caption = Format$(NZ(label利益1.Caption) / NZ(TextBox4.Value), "#.0%")
label利益率2.Caption = Format$(NZ(label利益2.Caption) / NZ(TextBox5.Value), "#.0%")
label利益率3.Caption = Format$(NZ(label利益3.Caption) / NZ(TextBox6.Value), "#.0%")
End Sub
Private Function NZ(arg As Variant) As Double
NZ = 0
On Error Resume Next
NZ = CDbl(arg)
End Function
Private Sub FormatNum(ByVal ctrl As MSForms.TextBox)
ctrl.Text = Format$(ctrl.Text, "\\#,##0")
End Sub
Private Sub KeyInputNumOnly(ByVal KeyCode As MSForms.ReturnInteger)
'数字キーと制御キー以外は入力無効化する(Keycode=0にする)
Select Case KeyCode
Case vbKey0 To vbKey9, vbKeyNumpad0 To vbKeyNumpad9
Case vbKeyLeft, vbKeyRight
Case vbKeyBack, vbKeyDelete
Case vbKeyReturn, vbKeySeparator, vbKeyTab
Case Else: KeyCode = 0
End Select
End Sub
No.3
- 回答日時:
こんにちは。
Access の NZ みたいな関数を書いてみては?
function NZ(arg as variant) as double
NZ = 0
on error resume next
NZ = cdbl(arg)
end function
それで、まとめて計算。
スマホで書くの辛いので同じような内容は省略してます。適当に直して下さい。
sub calc()
label利益1.caption = format(NZ(TextBox4.value)-NZ(TextBox1.value), "#,##0")
label利益2.caption = 省略
label利益3.caption = 省略
label利益率1.caption = ""
label利益率2.caption = ""
label利益率3.caption = ""
on error resume next
'0除算の例外処理は必要かな
label利益率1.caption = format(NZ(label利益1.caption)/NZ(TextBox4.value), "#.0%")
label利益率2.caption = 省略
label利益率3,caption = 省略
end sub
あとは、Textbox1から6の afterupdateイベントで calc を呼び出します。
Private Sub TextBox1_AfterUpdate()
Call calc
End Sub
動作確認してません。
No.2
- 回答日時:
label利益1とlabel利益率1についてです。
利益2,3と利益率2,3は同じようにして作成してください。
Private Sub TextBox1_AfterUpdate()
Call set_rieki1
End Sub
Private Sub TextBox4_AfterUpdate()
Call set_rieki1
End Sub
Private Sub set_rieki1()
Dim shiire As Long: shiire = 0
Dim uriage As Long: uriage = 0
If IsNumeric(TextBox1.Value) And IsNumeric(TextBox4.Value) Then
shiire = CLng(TextBox1.Value)
uriage = CLng(TextBox4.Value)
If uriage <> 0 Then
Label利益1.Caption = uriage - shiire
Label利益率1 = Format(((uriage - shiire) / uriage), "#.0%")
End If
End If
End Sub
今回もご丁寧にご回答いただきありがとうございました。
コロナ陽性になりお礼が遅くなり申し訳ありません。。
まだちょっと試すことが出来てないので、試してまたご連絡いたします。
No.1
- 回答日時:
リンク先は見てませんが先の質問/回答のやり取りでは、別に計算用の変数を準備し計算後に表示形式を変えてたと思いましたけど。
ようはその変数を増やしてそれぞれに代入し計算させれば宜しいのでは?
もし受け取った回答が理解できない内容であれば、その時にキチンと説明を受けておけば今回の応用は可能と思われます。
小出しにされるのって回答者は手間にしかならないですしね。
ただテキストボックスに値がない場合の回避ルートは必要でしょうけど、基本のIf文などで対応できるかも知れないですね。
ご回答ありがとうございます。
また、コロナ陽性になってしまい、お礼が遅くなりすみませんでした。。
おっしゃる通り、自身できちんと理解しながらやらねばと痛感しております。
そんな私にヒントや考え方を示してくださり本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
VBA テキストボックスの計算
Visual Basic(VBA)
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
エクセル VBA テキストボックス 掛け算 例)5 × -5 ができない
Excel(エクセル)
-
-
4
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
5
Excel vbaで複数のテキストボックスの足し算
Visual Basic(VBA)
-
6
Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法
Visual Basic(VBA)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
11
Excel、VBAのユーザーフォームのラベルで変数を…
Excel(エクセル)
-
12
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
13
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
14
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
15
カンマ区切り
Visual Basic(VBA)
-
16
TextBoxから数字が文字として入力される?
Visual Basic(VBA)
-
17
VBA テキストボックスに3桁カンマ表示させたい
その他(Microsoft Office)
-
18
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
19
Excel ユーザーフォームで計算 空欄の場合のエラー処理
Visual Basic(VBA)
-
20
Vba テキストボックス文字を右端から配置していく方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
笹倉和幸さんの投資について、...
-
機会損失の対義語
-
マイナス時の前年比の計算方法
-
エクセルで前年比を計算したい
-
自社株買いの株主メリットにつ...
-
前年対比の計算方法について
-
会社って売上の何パーセントく...
-
前年度比(または前年度比増減率...
-
当期利益と四半期純利益の違い
-
従業員60名の会社で純利益年...
-
誰の資産になりますか?
-
企業が求める人物像は 言われた...
-
仕切価格とは?
-
期中平均株式数について
-
なぜ商社は今儲かってるのでし...
-
欲しい給料の5倍の利益を出せ!?
-
「訴えの利益」と「法律上の利...
-
4階からの飛び降りって成功率ど...
-
旧財閥系の研究職って結構待遇...
-
利益計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
笹倉和幸さんの投資について、...
-
機会損失の対義語
-
債権 日経平均レバレッジETF
-
エクセルで前年比を計算したい
-
マイナス時の前年比の計算方法
-
企業が求める人物像は 言われた...
-
前年対比の計算方法について
-
一次利益とは何ですか? 検索し...
-
従業員60名の会社で純利益年...
-
仕切価格とは?
-
「訴えの利益」と「法律上の利...
-
5000円に対して25%利益の計算方法
-
当期利益と四半期純利益の違い
-
一石二鳥 漁夫の利 意味違いま...
-
Excel VBA ユーザーフォーム内...
-
欲しい給料の5倍の利益を出せ!?
-
なぜ商社は今儲かってるのでし...
-
利益剰余金と現金同等物の質問
-
GVAとは?
-
前年度比(または前年度比増減率...
おすすめ情報