0

以下のように、ワークシート「LutSht」に「LUT」という名前のテーブルがあります。

A   1   2   3
B   4   5   6
C   7   8   9

2 番目のワークシート「CalSht」セル A1 には、「LUT」の最初の列から生成されたドロップダウン リストが含まれています。

vlookup が VBA でどのように動作するかを把握するためにマクロを記録すると、次のようになります。

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],LUT,2,)"

この例では、検索された値がセルに書き込まれます。代わりに配列変数に渡そうとしています。

ここに私の欠陥のあるコードがあります:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x(3) As Double
    Dim i As Integer
    If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
        For i = 1 To 3
            x(i)=VLOOKUP(RC[-1],LUT,i+1,) 
'Line kept simple, but myriad of alternatives were tested unsuccessfully 
        Next
    End If
End Sub

これまでのところ、構文を修正する試みはすべて失敗しました。助けていただけますか?

4

2 に答える 2

0

LUT が名前付き範囲であると仮定します。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim arrResults() As Variant
    Dim i As Long

    If Not Intersect(Me.Range("A1"), Target) Is Nothing Then
        ReDim arrResults(1 To [COLUMNS(LUT)] - 1)
        For i = 1 To UBound(arrResults)
            arrResults(i) = Evaluate("VLOOKUP(A1,LUT," & i + 1 & ",TRUE)")
        Next i

        'Do something with your array here
        MsgBox Join(arrResults, ", ")

    End If

End Sub
于 2013-08-29T20:23:26.040 に答える