2016-12-07 40 views
0

我有一些文本框編程顯示基於成本,數量和稅收的計算結果。問題是,如果我將退稅箱編程設置爲出廠退稅百分比,則該操作之後不再執行計算,因爲該框會變成字符串類型。這是一種正常的行爲?有沒有辦法解決這個問題?貨幣格式的文本框帶來正常的計算結果。問題是,只有百分之一的問題......以百分比形式計算箱形式

Form print with visual explanation

PS:我用的是普通的格式化方法:

Private Sub BoxIPI_Exit(ByVal Cancel As MSForms.ReturnBoolean) 

    BoxIPI = Format(BoxIPI, "percent") 

End Sub 

的代碼是因爲所需的計算量的長,但是,把它放在一個概括地說,我認爲團結德計算IPI的部分,作爲一個例子(變量是公開的):

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

沒有看到你的代碼,我已經決定Wh是ip一個很酷的例子,讓你看看如何處理你的問題。

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

Got it!非常感謝! –