2016-12-07 12 views
0

私は、コスト、数量、税金に基づいて計算結果を表示するようにプログラムされたテキストボックスをいくつか用意しています。問題は、終了時に税率ボックスをパーセントで書式設定するようにプログラムすると、ボックスが文字列型になるため、アクションの後に計算が行われなくなります。それは正常な行動ですか?それを解決する方法はありますか?通貨形式のテキストボックスは、通常の計算結果を表示します。問題は...フォームをパーセント形式のボックスで計算する

Form print with visual explanation

PS:私は、共通のフォーマット方法を使用するだけパーセントの問題です:

Private Sub BoxIPI_Exit(ByVal Cancel As MSForms.ReturnBoolean) 

    BoxIPI = Format(BoxIPI, "percent") 

End Sub 

コードが長いために必要な計算量である、しかし、私はWHすることを決定したあなたのコードを見ることなく

If IsNumeric(.BoxQtd.Text) = True Then 
Quantidade = .BoxQtd 
Else: Quantidade = 0 
End If 

If IsNumeric(.BoxVendaU.Text) = True Then 
VendaUni = .BoxVendaU 
Else: VendaUni = 0 
End If 

If IsNumeric(.BoxIPI.Text) = True Then 
IPI = CDbl(.BoxIPI) 
Else: IPI = 0 
End If 

VIPI = (Quantidade * VendaUni) * IPI 
.BoxValorIPI = Format(VIPI, "currency") 

答えて

0

:一言で言えば上にそれを置くために、私は例(変数が公開されて)として、デIPIを計算する部分を統一しましたあなたの問題に対処する方法を見てあなたのための素晴らしい例。

enter image description here

Private Sub CommandButton1_Click() 
    If InStr(TextBox1.Value, "%") > 0 Then 
     myValue1 = Mid(TextBox1.Value, 1, InStr(TextBox1.Value, "%") - 1) 
     myValue1 = myValue1/100 
    End If 

    myValue2 = TextBox2.Value 

    myValue3 = myValue1 * myValue2 

    TextBox3.Value = myValue3 

    Debug.Print "v1 "; myValue1 
    Debug.Print "v2 "; myValue2 
    Debug.Print "v3 "; myValue3 

End Sub 

youreのあなたのコードを持つ問題が

If IsNumeric(.BoxIPI.Text) = True Then 
    IPI = CDbl(.BoxIPI) 
Else: IPI = 0 
End If 

ある%記号は、コンパイラがBoxIPI.Valueが数値ではないことを考えさせます。これを使用すると、あなたは自分の原因にこれを適応させることができますように私小数点除算を使用する必要がありますあなたはいけないあなたの問題もちろん

If IsNumeric(Mid(TextBox1.Value, 1, InStr(TextBox1.Value, "%") - 1)) Then 
    myValue1 = Mid(TextBox1.Value, 1, InStr(TextBox1.Value, "%") - 1) 
    myValue1 = myValue1/100 
End If 

を解決し、進路の変更「をTextBox1」BoxIPIに、しかし、あなたはポイントを得る:)

ます
+0

こんにちは、ダグ!ご協力いただきありがとうございます!私は使用しているコードの例で質問を更新しました。私は変数をこのように定義しなければなりません。なぜなら、TextBoxが変更されるたびにリアルタイムで計算が必要になるからです。ユーザーがテキストや記号を入力したときにエラーが発生するのを防ぎます。私のコードにあなたのソリューションを埋め込むことは可能ですか? –

+0

@AlekosMazzolotti私はそれをより詳細に説明し、あなたが使用できる部分を示すために私の答えを更新しました –

+1

これが得られました!どうもありがとう! –

関連する問題