ユーザーフォームを作成しましたので、問題を記述するために使用します。ユーザーフォームの算術演算
私は4つのユーザー入力(製品の原価、販売台数、返品された単位数、単位当たりの修理代金)を取って、総収入(製品原価x販売台数)と総返品費用(返品台数×返品台数)である。
コードを書くにはどうすればいいですか?ここ
ユーザーフォームのイメージ:http://imgur.com/a/qc3Kk
ユーザーフォームを作成しましたので、問題を記述するために使用します。ユーザーフォームの算術演算
私は4つのユーザー入力(製品の原価、販売台数、返品された単位数、単位当たりの修理代金)を取って、総収入(製品原価x販売台数)と総返品費用(返品台数×返品台数)である。
コードを書くにはどうすればいいですか?ここ
ユーザーフォームのイメージ:http://imgur.com/a/qc3Kk
だから、ここでは、このソリューションが私の感想です。作成するのは非常に複雑なプログラムではありません。全体的には、1つのUserFormであり、画像の中には、計算を行う1つのコードセクションと、テキストボックスに入力された値が数値であることを保証する1つのコードセクションがあります。インターフェイスは、ラベルとテキストボックスの組み合わせです:
それがない場合は入力された値がnumericaと警告しているかどうかを評価各テキストボックスのコードがあります。各ルーチンは、目的に合わせてIsNumeric関数を使用し、テキストボックスに値があるかどうかを確認します。 AfterUpdateイベントは、何かを入力した後にのみルーチンが実行されることを保証します。それぞれのテキストボックスのルーチンを別々に持つか、各テキストボックスが参照するモジュールに統合されたルーチンを書くかを選択できます。例のために:
Private Sub txtCost_AfterUpdate()
With UserForm1
With .txtCost
If Not IsNumeric(.Value) Or .Value = "" Then
MsgBox "Please enter a numeric value only!"
End If
End With
End With
End Subの
Private Sub txtReturned_AfterUpdate()
With UserForm1
With .txtReturned
If Not IsNumeric(.Value) Or .Value = "" Then
MsgBox "Please ensure you enter only numeric values"
End If
End With
End With
End Sub
Private Sub txtTotalFix_AfterUpdate()
With UserForm1
With .txtTotalFix
If Not IsNumeric(.Value) Or .Value = "" Then
MsgBox "Please ensure you enter only numeric values"
End If
End With
End With
End Sub
Private Sub txtUnits_AfterUpdate()
With UserForm1
With .txtUnits
If Not IsNumeric(.Value) Or .Value = "" Then
MsgBox "Please ensure you enter only numeric values"
End If
End With
End With
End Sub
ルーチンの肉とジャガイモも複雑ではありません。私は、計算の値を吐き出すために各テキストボックスの値を直接使用しました。代わりに、変数を使用することもできます(かなり大きい数値を扱うことができるため、xをDoubleとしてデカールしましたが、この例では使用しません)。ルーチンはModule1内にあり、すべての値が同じIsNumeric関数を持つ数値であることを確認し、数式を実行し、空であるか番号でないかを警告します。私はあなたが貯蓄を計算したか、またはYESまたはNOの基準を計算したかについて肯定的ではなかったので、それを調整する必要があります。
Sub QA_prog()
Dim x As Double
With UserForm1
If IsNumeric(.txtCost.Value) And IsNumeric(.txtUnits.Value) _
And IsNumeric(.txtReturned.Value) And IsNumeric(.txtTotalFix.Value) Then
.lblEarn.Caption = .txtCost.Value * .txtUnits.Value
.lblTRC.Caption = .txtCost * .txtTotalFix
.lblProfit = .lblEarn.Caption - .lblTRC.Caption
.lblCostFix = .txtReturned * .txtTotalFix
.lblTE.Caption = .lblProfit - .lblCostFix
.lblSave.Caption = .lblTRC + .lblCostFix
If .lblSave.Caption > 5000 Then
.txtYorN.Text = "NO"
Else
.txtYorN.Text = "YES"
End If
Else
MsgBox "Double check your values!"
End If
End With
End Sub
最後に、ボタン。 [終了]ボタンは、アンロードを使用してプログラムを閉じます。
Private Sub cmdExit_Click()
Unload UserForm1
End Sub
計算ボタンがサブルーチンQAを呼び出します。
Private Sub cmdCalc_Click()
Module1.QA_prog
End Sub
プログラムを起動するために、あなただけのスプレッドシートと型にボタンを追加する必要がある「UserForm1.show
を」コードウィンドウでプログラムをアクティブにします。
'txtTotalEarnings.Value = txtCostofProduct.Value * txtUnitsSold.Value'などです。私はちょうどテキストボックスの名前を推測していることに注意してください。何を試しましたか? – tigeravatar
@tigeravatarあなたはそれらの上で算術演算を実行する前に、これらの文字列を数値に変換したいでしょう。それ以外の場合は、VBAに決定させるようにします。[あなたが望むことはできません](https://stackoverflow.com/q/44680791/1188513)。 –