問題: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
留言列表