【问题标题】:Calculations in form with percent formated box带有百分比格式框的表格中的计算
【发布时间】:2016-12-07 14:16:37
【问题描述】:

我编写了一些文本框来显示基于成本、数量和税收的计算结果。问题是,如果我将税收框编程为在退出时格式化为百分比,则在操作之后不再进行计算,因为该框变成了字符串类型。这是正常行为吗?有没有办法解决这个问题?货币格式的文本框带来正常的计算结果。问题只是百分比问题...

PS.:我用的是常用的格式化方法:

Private Sub BoxIPI_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    BoxIPI = Format(BoxIPI, "percent")

End Sub

由于需要计算量,代码比较长,但是,简单来说,我把计算de 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")

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在没有看到您的代码的情况下,我决定为您提供一个很酷的示例,以了解如何处理您的问题。

    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
    

    您的代码遇到的问题是

    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,但你明白了:)

    【讨论】:

    • 嗨,道格!谢谢你的帮助!我已经用我使用的代码示例更新了我的问题。我必须以这种方式定义变量,因为我需要在任何 TextBox 更改时实时进行计算,并且它可以防止在用户键入文本或符号的情况下发生错误。是否可以将您的解决方案嵌入到我的代码中?
    • @AlekosMazzolotti 我已经更新了我的答案以更详细地解释它并向您展示您可以使用的部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多