3

私のExcelテーブルには、アイテムの数として1行(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 に答える