何度もすみません。。
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も見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel VBA ユーザーフォーム内のラベルにテキストボックスの小計を出す方法
Visual Basic(VBA)
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
Excel vbaで複数のテキストボックスの足し算
Visual Basic(VBA)
-
-
4
VBA テキストボックスの計算
Visual Basic(VBA)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
7
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
8
エクセル VBA テキストボックス 掛け算 例)5 × -5 ができない
Excel(エクセル)
-
9
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
10
VBA テキストボックスで計算
Access(アクセス)
-
11
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
12
TextBoxから数字が文字として入力される?
Visual Basic(VBA)
-
13
userFormに貼り付けたLabelを変数に
Visual Basic(VBA)
-
14
ユーザーフォームで数字にカンマを付けたい
Excel(エクセル)
-
15
エクセル ユーザーフォームで数値の合計を表示するには
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
Vba テキストボックス文字を右端から配置していく方法
Visual Basic(VBA)
-
18
ユーザーフォームのラベルに日付を表示させる方法があればお願いします。出来ればコード書いていただけると
Visual Basic(VBA)
-
19
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
20
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
5000円に対して25%利益の計算方法
-
機会損失の対義語
-
エクセルで前年比を計算したい
-
前年対比の計算方法について
-
投下資本回収余剰計算がよくわ...
-
Excel VBA ユーザーフォーム内...
-
無償の利益供与?
-
マイナス時の前年比の計算方法
-
採算ライン
-
当期利益と四半期純利益の違い
-
予算達成率の計算方法
-
欲しい給料の5倍の利益を出せ!?
-
美容院でカット、ヘッドスパの...
-
TSUTAYAで、中古でGReeeeNのCD ...
-
一次利益とは何ですか? 検索し...
-
会社が儲かっているかどうかは...
-
利益剰余金と現金同等物の質問
-
飲食店のメニューの金額設定
-
限界利益の意義がわからない
-
セレクトショップの売上について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
機会損失の対義語
-
5000円に対して25%利益の計算方法
-
前年対比の計算方法について
-
エクセルで前年比を計算したい
-
一次利益とは何ですか? 検索し...
-
マイナス時の前年比の計算方法
-
当期利益と四半期純利益の違い
-
Excel VBA ユーザーフォーム内...
-
GVAとは?
-
増収増益の益は、【経常利益】...
-
従業員60名の会社で純利益年...
-
欲しい給料の5倍の利益を出せ!?
-
前年度比(または前年度比増減率...
-
知り合いの勤めている工場が不...
-
極端な話、1万円から投資で500...
-
会社って売上の何パーセントく...
-
無償の利益供与?
-
投下資本回収余剰計算がよくわ...
-
利己的と利他的のちがいについて
-
現存利益って何ですか?
おすすめ情報