2013-06-24 19 views
0

我最近纔開始使用VBA,因此我很不熟悉許多命令。Excel VBA - 通過vlookup從各種woorkbooks填充表

下面是我的代碼,這應該是不言自明的。

但是,有似乎是以下行的一個問題:

Range("B4").Formula = "=index(C5:AV51,1,column(ActiveCell)-2)"

出了什麼問題?

Private Sub Worksheet_Change(ByVal Target As Range) 
Application.EnableEvents = False 

For Each Cell In Range("C6:AV51") 
Range("B4").Formula = "=index(C5:AV51,1,column(ActiveCell)-2)" 

    If ActiveCell.Row - ActiveCell.Column < 3 Then 
     ActiveCell.Formula = "=vlookup(index(B5:AV51,row()-4,1),'[" & Range("B4").Value & ".xlsx]Sheet1'!A1:E70,4,false)" 

    ElseIf ActiveCell.Row - ActiveCell.Column = 3 Then 
     ActiveCell.Value = "" 
    Else 
     ActiveCell.Formula = "=vlookup(index(B5:AV51,row()-4,1),'[" & Range("B4").Value & ".xlsx]Sheet1'!A1:E70,5,false)" 
    End If 
Next 
    Application.EnableEvents = True  
End Sub 

回答

1

ActiveCell是一個對象,所以與

ActiveCell 

取代的

range("activecell") 

所有實例實施例

if range("activecell").row - range("activecell").column < 3 then 

變得

if ActiveCell.row - ActiveCell.column < 3 then 

另一個錯誤,更改:

range("B4").formula = "=index(C5:AV51,1,column("activecell")-2)" 

這個

range("B4").formula = "=index(C5:AV51,1," & ActiveCell.Column & ")-2)" 
+0

謝謝,這已經改善我的代碼了很多。然而,我仍然在這行'錯誤,否則如果ActiveCell.row - ActiveCell.column = 3然後' – jcv

+0

Elseif'是一個字 –

+0

謝謝,代碼仍然無法正常工作,但是。我已經在我的第一篇文章中更新了它,如果你可以看看:) – jcv