3

在我的 excel 表中,我有一行(第 5 行)作为项目数量,另一行(第 6 行)作为项目的价格。例如,我想将 200 乘以 56.50 美元,但我遇到了这个脚本的问题。任何人都可以请帮忙。

Sub calcprice()
    Dim i As Integer
    Dim iRowNumber As Integer   ' Integer to store result in
    Dim val As Double

    iRowNumber = InputBox(Prompt:="Number of Rows", _
          Title:="Rows: ", Default:="# of Rows")
    For i = 1 To iRowNumber
        If Cells(i, 5).Value >= 0 And Cells(i, 6).Value >= 0 And IsEmpty(Cells(i, 5)) = False And IsEmpty(Cells(i, 5)) = False Then
            val = FormatCurrency(Cells(i, 5).Value) * Cells(i, 6).Value
            Cells(i, 7).Value = val
        End If
    Next i
End Sub

它说运行时错误 13
类型不匹配这里是图像: 它说货币



这是链接:https
://www.dropbox.com/s/lla2cuz8hqu5qyp/test.xlsm我也不能使用 =a*bi 必须使用宏!

4

3 回答 3

3

你不需要循环

您可以在 G 列中使用单次射击范围

  • 将 G5 中的公式添加到输入的用户iRowNumber,以测试每行中是否出现 > 0 的结果(或添加""0 结果)
  • 用值覆盖公式

    Sub calcprice()
        Dim iRowNumber As Long   ' Integer to store result in        
    iRowNumber = InputBox(Prompt:="Number of Rows", _
          Title:="Rows: ", Default:="# of Rows")
    
    With Range(Cells(5, 7), Cells(iRowNumber, 7))
    .FormulaR1C1 = "=IF(N(RC[-1]*RC[-2]),RC[-1]*RC[-2],"""")"
    .Value = .Value
    End With
    End Sub
    
于 2012-11-04T00:59:34.943 回答
0

试试这个。记得将第 5 个单元格和第 6 个单元格格式化为您喜欢的货币!

    Sub calcprice()

    Dim iRowNumber As Integer
    Dim val As Double


    iRowNumber = InputBox(Prompt:="Number of Rows", _
          Title:="Rows: ", Default:="# of Rows")


    For i = 1 To iRowNumber
        If Cells(i, 5).Value >= 0 And Cells(i, 6) >= 0 Then
            If Cells(i, 6).Value > 0 Then
                val = Cells(i, 5).Value * FormatCurrency(Cells(i, 6).Value)
                Cells(i, 7).Value = val
            End If

        End If
    Next i
End Sub
于 2012-11-03T15:58:42.827 回答
0

你有For i = 1 to iRowNumber

图像显示数据从第 5 行开始。前面的行包含文本。

因此,尝试For i = 5 to iRowNumber

于 2012-11-05T08:02:49.630 回答