0

1 つのシート (シート 2) で顧客の名前を循環させ、シート 1 の列 J に対応する値を取得し、元のシートの顧客の隣に貼り付けようとしています。

これは私のコードです:

For i = 0 To 9

Dim rowi As Long

rowi = Application.WorksheetFunction.Match((Worksheets("Sheet2").Cells(5 + i, 4)), Worksheets("Sheet1").Range("B:B"), 0)
Crystali = Cells(rowi, 10)
Sheets("Sheet2").Activate
Worksheets("Sheet2").Cells(5 + i, 7) = Crystali
Next i

誰かがそれを修正するのを手伝ってくれますか? 「Worksheetfunction クラスの Match プロパティを取得できません」というエラーが表示され続けます

前もって感謝します。

4

1 に答える 1

0

ここでは、ティムが示唆するように「ワークシート関数」部分なしで「Match()」関数を使用する方法の短い例を示します。Match 関数が呼び出された後、'IsError()'で結果を確認してください。

Option Explicit

Public Sub test()
    Dim row_index As Long
    Dim match_result As Variant
    Dim lookup_value As Variant
    Dim lookup_array As Variant

    Set lookup_array = Range("Sheet1!B:B")

    Const FIRST_ROW As Byte = 5
    Const LAST_ROW As Byte = 9

    For row_index = FIRST_ROW To LAST_ROW

        Set lookup_value = Range("Sheet2!D" & row_index)
        match_result = Application.Match(lookup_value, lookup_array, 0)

        If Not IsError(match_result) Then
            ' copy data only if Match function found something
            Range("Sheet2!G" & row_index) = Range("Sheet1!J" & match_result)
        End If

    Next row_index
End Sub
于 2013-11-05T20:32:01.717 に答える