close

問題:http://club.excelhome.net/thread-1394890-1-1.html

重點方法:

array

offset


解法:

Private Sub Worksheet_Change(ByVal Target As Range)

'target的欄列數需在特別的地方才會觸發此下方程式
If Target.Row >= 3 And Target.Column = 2 Then

Dim d, arr, brr

Set d = CreateObject("scripting.dictionary")

With Sheets(2)
    arr = .UsedRange
End With

'用數列的方法將此key值的相關資料用字典賦予給該key值

For i = 1 To UBound(arr, 1)
    d(arr(i, 2)) = Array(arr(i, 1), arr(i, 3), arr(i, 4), arr(i, 5), arr(i, 6), arr(i, 7), arr(i, 8), arr(i, 9), arr(i, 10), arr(i, 11))
Next

'將target的值給變數bh,再將用此key值建立的陣列給予另一陣列brr(索引值從0開始)

'brr(0) = arr(i,1)、brr(1) = arr(i,3)、brr(2) = arr(i,4)...ETC

bh = Target.Value

brr = d(bh)

'如果key值存在的話,便將值用offset的方式帶入特定儲存格

'如果不用d.exists確認的話,沒有該key值時會跳出錯誤訊息

if d.exists(bh) then

Target.Offset(0, -1) = brr(0)

For j = 1 To 9
    Target.Offset(0, j) = brr(j)
Next

end if

End If
End Sub

arrow
arrow
    全站熱搜

    chrisovo 發表在 痞客邦 留言(0) 人氣()