2017-09-06 125 views
0

我正在運行VBA以使用last row last col填充所有單元格。但是我的VBA從B3開始填充,直到最後一行,然後在最後一行下面添加一行並填充到最後一行。目標公式VBA

的代碼看起來是這樣的:

Sub RUNFILL() 
With Worksheets("Sheet3").Range("B3") 
    Set Target = .Range(.Cells(1, Columns.Count).End(xlToLeft), Cells(Rows.Count, "A").End(xlUp)) 
    Target.FormulaLocal = "=INDEKS(Sheet1!$N:$N;MATCH(Sheet3!$A:$A&Sheet3!B$1;Sheet1!$R:$R;0))" 
End With 
End Sub 

我不知道爲什麼它以那種方式罷了,所以我希望有人能看到的問題,並幫助我糾正它。

Image of the problem

+0

應該不INDEKS是INDEX? – Sorceri

+0

你究竟在做什麼?您對B3的引用可能使其成爲相對引用,因此是額外的行。 – SJR

+0

刪除A1180中的0,你的代碼應該沒問題,當然還有@Sorceri的建議。 – kaza

回答

0

考慮到

Worksheets("Sheet3").Range("B3").Range("A1") 

相當於

Worksheets("Sheet3").Range("B3") 

Worksheets("Sheet3").Range("B3").Range("C5:D10") 

相當於

Worksheets("Sheet3").Range("D7:E12") 

With Worksheets("Sheet3").Range("B3") 
    Set Target = .Range(...) 
End With 

相當於

Set Target = Worksheets("Sheet3").Range("B3").Range(...) 

這就是爲什麼你不將其設置爲你認爲你應該的區域。


但我不知道爲什麼Worksheets("Sheet3").Range("B3").Cells(1, ActiveSheet.Columns.Count)(的.Cells(1, Columns.Count)在你的代碼擴展當量)不崩潰了,因爲這是(假設表Sheet 3是活動的),相當於Cells(2 + 1, 1 + Columns.Count)將因引用給出一個1004錯誤超出右側限制的列。 (並且在我嘗試運行你的代碼時確實給出了這個錯誤。)

而且我也不知道爲什麼你的代碼在B列填充到最後一行(但在B之後沒有其他列),然後插入一個額外的行(不是兩個)低於那個延伸到列B以外的行。