2017-09-05 76 views
0

我有一個VBA,即時通訊使用單獨的工作表上的按鈕運行。但是,出於某種原因,當我單擊按鈕時VBA不起作用,當我使用VBA應用程序運行VBA時,VBA運行時沒有任何問題。 VBA Im運行看起來像這樣。按鈕沒有運行所有的VBA

Sub Fillit() 

Worksheets("Sheet3").Range("B3").FormulaLocal = "=INDEKS(Sheet1!$N:$N;SAMMENLIGN(Sheet3!$A:$A&Sheet3!B$1;Sheet1!$R:$R;0))" 

LastCol = Worksheets("Sheet3").Cells(1, Columns.Count).End(xlToLeft).Column 
lastRow = Worksheets("Sheet3").Cells(Rows.Count, "A").End(xlUp).Row 
Worksheets("Sheet3").Range("B3").AutoFill Destination:=Worksheets("Sheet3").Range("B3:B" & lastRow), Type:=xlFillDefault 'fill C column 
Worksheets("Sheet3").Range("B3:B" & lastRow).AutoFill Destination:=Worksheets("Sheet3").Range(Cells(3, "B"), Cells(lastRow, LastCol)), Type:=xlFillDefault 'fill all rows 

End Sub 

當我使用它僅運行VBA的第一行中的鍵,

編輯:我已經更新了VBA其中i定義表。現在調試器告訴我最後一行運行時存在錯誤1004

+0

夫婦的事情檢查......列A中的單元格是連續的,以及行1;另外,請確保使用宏引用表單。你有沒有看過去除自動填充,只是複製/粘貼範圍B3:B&lastRow,而不是使用自動填充? – Cyril

+0

嘗試更改子名稱並將其分配給宏。 – HA560

回答

0

這個問題可能是由於沒有限定範圍引用。

我同意@Cyril,沒有理由使用自動填充。只需定義您的範圍,然後將公式分配給它。
注意:定義一個目標範圍是沒有必要的,但它使調試更容易。

With Worksheets("Sheet3") 
    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 

該OP的公式是使用分號分隔下面的值是美國版的公式。

'Target.FormulaLocal = "=INDEKS(Sheet1!$N:$N,MATCH(Sheet3!$A:$A&Sheet3!B$1,Sheet1!$R:$R,0))" 
+0

你好托馬斯。我在哪裏定義forumla應該從B3開始? –

+0

B3是左上角或使其成爲起點的範圍。 – 2017-09-05 20:40:37

+0

公式的範圍將根據標準範圍相關性規則進行調整。 – 2017-09-05 20:44:55