VBAはまだやり始めたばかりで、ちょっとわからないので、教えて
下さい。
TextBox1~19に金額を入力すると、
TextBox60に小計
TextBox61に消費税
TextBox62に合計
が入るように設定してあります。
TextBox61のよこに
OptionButton1 切捨て
OptionButton2 切り上げ
OptionButton3 四捨五入
OptionButton4 税込み(「-」を入力)
を設定し、オプションボタンを選択するごとに、TextBox61の
消費税設定を変えたいと思っています。
標準では下記のコードでOptionButton1が選択されるように
してあります。
オプションボタンで切り替えるにはどのようにしたら
よいでしょうか。。。
Private Sub 合計Sub(ByVal myTextBox As MSForms.TextBox)
Const cnsTax As Double = 0.05
Dim i As Long
Dim v(1 To 19) As Long
Dim y(60 To 62) As Long
'
With myTextBox
.Value = Format$(.Value, "#,##0")
End With
'再計算
On Error Resume Next
For i = 1 To 19
v(i) = CLng(Me.Controls("TextBox" & i).Value)
Next
With Application.WorksheetFunction
y(60) = .Sum(v)
If myTextBox Is Me.TextBox61 Then
y(61) = CLng(myTextBox.Value)
Else
y(61) = .RoundDown(y(60) * cnsTax, 0)
End If
y(62) = .Sum(y(60), y(61))
End With
On Error GoTo 0
For i = 60 To 62
Me.Controls("TextBox" & i).Value = Format$(y(i), "#,##0")
Next
End Sub
No.2ベストアンサー
- 回答日時:
質問のような場合の合計計算などは、ふうつOptionbuttonのClickではなくて、
入力確認後、CommandButtonをClickすることで計算させるのではないでしょうか。
で、その方法。
計算用にCommandButtonをひとつ配置しておきそのClickで計算。
'------------------------------------------------
Private Sub CommandButton1_Click()
Const cnsTax As Double = 0.05
Dim Kei As Long
Dim Zei As Long
Dim i As Integer
For i = 1 To 19
If IsNumeric(Me.Controls("TextBox" & i).Value) Then
Kei = Kei + CLng(Me.Controls("TextBox" & i).Value)
End If
Next i
Select Case True
Case OptionButton1.Value
Zei = WorksheetFunction.RoundDown(Kei * cnsTax, 0)
Case OptionButton2.Value
Zei = WorksheetFunction.RoundUp(Kei * cnsTax, 0)
Case OptionButton3.Value
Zei = WorksheetFunction.Round(Kei * cnsTax, 0)
Case OptionButton4.Value
Zei = 0
End Select
TextBox60 = Kei
TextBox61 = Zei
TextBox62 = Kei + Zei
End Sub
'------------------------------------------------
上記では、OptionButton4、または、
どのOptionButtonもチェックされてないときは、
Zeiは0になりますので
実際には、
Case OptionButton4.Value
Zei = 0
この部分は省略してもかまいません。
以上です。
myRangeさんありがとうございます。
フォーム上で、オプションボタンをクリックして、
簡単に、変わればいいかなぁと思っていたのですが、
myRangeさんの言うとおり、コマンドボタンでやるという方法も
有ですね。
その方法でやってみたいと思います
No.1
- 回答日時:
Select Case True
Case OptionButton1.Value
' 切捨て
Case OptionButton2.Value
' 切り上げ
Case OptionButton3.Value
' 四捨五入
Case OptionButton4.Value
' 税込み
End Select
オプションボタンの状態による分岐です。
> オプションボタンを選択するごとに
効率無視であれば OptionButtonのClickイベントプロシージャで合計Subを呼び出せばよいかと。
この回答への補足
Wizard_Zeroさんありがとうございます。
一応切り捨ての時の消費税計算のコードを作って、
Clickイベントでやってはいたのですが、
「引数は省略できません」というエラーがでてしまうのです。
私のコードが間違っているとおもうのですが、どのように変えたらいいかわかりません。
______________________________
Private Sub 切り上げSub(ByVal myTextBox As MSForms.TextBox)
Const cnsTax As Double = 0.05
Dim i As Long
Dim v(1 To 19) As Long
Dim y(60 To 62) As Long
'
With myTextBox
.Value = Format$(.Value, "#,##0")
End With
'再計算
On Error Resume Next
For i = 1 To 19
v(i) = CLng(Me.Controls("TextBox" & i).Value)
Next
With Application.WorksheetFunction
y(60) = .Sum(v)
If myTextBox Is Me.TextBox61 Then
y(61) = CLng(myTextBox.Value)
Else
y(61) = .RoundUp(y(60) * cnsTax, 0)
End If
y(62) = .Sum(y(60), y(61))
End With
On Error GoTo 0
For i = 60 To 62
Me.Controls("TextBox" & i).Value = Format$(y(i), "#,##0")
Next
End Sub
________________________________
Private Sub OptionButton2_Click()
Call 切り上げSub
End Sub
教えて頂いた、Serect Caseのやり方ですが、
合計Subの消費税計算しているところで、入力すればいいのですか??
せっかく教えて頂いたのですが、使い方がわかりません。。。
合計Subの一部に組み込んでみたのですが、オプションボタンでの
切り替えができませんでした。
きっと、コードの入れ方が間違ってますよね?
With Application.WorksheetFunction
y(60) = .Sum(v)
If myTextBox Is Me.TextBox61 Then
y(61) = CLng(myTextBox.Value)
Else
Select Case True
Case OptionButton1.Value ' 切捨て
y(61) = .RoundDown(y(60) * cnsTax, 0)
Case OptionButton2.Value '切り上げ
y(61) = .RoundUp(y(60) * cnsTax, 0)
Case OptionButton3.Value '四捨五入
y(61) = .Round(y(60) * cnsTax, 0)
End Select
End If
y(62) = .Sum(y(60), y(61))
End With
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
右ビットシフト
-
5%割引の際の、小数点以下の扱...
-
BCの長さを四捨五入して小数点...
-
切り捨てて百の位までのがい数...
-
Access 1000以下を切り捨てる関数
-
ADOで算術型のRound関数を使いたい
-
小数点 第n位 を切り上げ,切り捨て
-
駐車場賃料の日割り計算について
-
excel関数で四捨五入以外の切り...
-
Excel有効数字の丸め方「0捨1入」
-
今投稿して解決したのですが 更...
-
エクセルで小数点第2位以下を...
-
四捨五入をするプログラムの書...
-
C言語
-
EXCELのINT関数・ROUNDDOWN関数...
-
エクセルの関数について。 残業...
-
なぜ消費税10%は×1.1なのですか...
-
自分が1人親方で1日単価16000円...
-
法人税・消費税修正申告納付の仕訳
-
1個あたりの製産時間を算出した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
5%割引の際の、小数点以下の扱...
-
Access 1000以下を切り捨てる関数
-
今投稿して解決したのですが 更...
-
COBOLの計算方法
-
Excel有効数字の丸め方「0捨1入」
-
駐車場賃料の日割り計算について
-
数字の double 型 を int型...
-
負の数の四捨五入の方法
-
数字の下二桁を削除したい
-
エクセルでの小数点以下切り捨...
-
50銭以下切り捨て51銭以上切...
-
ACCESSの切り上げ
-
「未満と以上」使う範囲。
-
勤務の稼働時間の計算がわかり...
-
次の計算式を使って、 利益率12...
-
ADOで算術型のRound関数を使いたい
-
ツェラーの公式について
-
小数点第2位の切捨て(エクセル...
-
端数処理における「小数以下」...
-
MATLABで小数を整数にするには?
おすすめ情報