0

これが私が試しているコードです:

Set found = Worksheets("Result").Range("A:A").Find(Prefix, , xlValues, xlWhole)
found.Offset(0, 1).Value = CInt(found.Offset(0, 1).Value) + CInt(C.Offset(0, 1).Value)

プレフィックスは、列にある3桁の数字です。次に、「C」の右側のセルによって検出された場所の右側のセルを増やします。タイプの不一致エラーが発生します。

これがcの由来です。

For Each C In Worksheets("AMZ").Range("C2:C" & endRow).Cells

何か案は?

編集:完全なコード

Sub processData()

Dim endRow As Variant
endRow = Worksheets("AMZ").Range("A65536").End(xlUp).Row

For Each C In Worksheets("AMZ").Range("C2:C" & endRow).Cells
    Dim found As Range
    Prefix = C.Value
    C.Select

    'remove prefix
    If Not Left(Prefix, 3) = "FBA" Then
        'nothing
        If Mid(Prefix, 3, 1) = "-" Then
            Prefix = Left(Prefix, 2)
        ElseIf Mid(Prefix, 4, 1) = "-" Then
            Prefix = Left(Prefix, 3)
        Else
            Prefix = "-1"
        End If

        If Not Prefix = "-1" Then
            Set found = Worksheets("Result").Range("A:A").Find(Prefix, , xlValues, xlWhole)
            found.Offset(0, 1).Value = CInt(Val(found.Offset(0, 1).Value)) + CInt(Val(C.Offset(0, 1).Value))
        End If
    End If
Next

End Sub
4

1 に答える 1

1

found.Offset(0, 1).Value)またはが直接整数に変換されない文字列値である場合、リストしたエラーが発生しCInt(C.Offset(0, 1).Value)ます。"""1234hello"

これを修正する最も簡単な方法は、値をVal(string)関数で囲むことです。あなたの状況では、次を使用します

found.Offset(0, 1).Value = CInt(Val(found.Offset(0, 1).Value)) + CInt(Val(C.Offset(0, 1).Value))

Val についての注意。指定した値が数値ではない場合、デフォルトで 0 になります。Val の詳細については、リンクを参照してください。(同上)

于 2012-09-25T02:48:52.740 に答える