按钮未运行所有VBA

时间:2017-09-05 18:26:06

标签: excel vba excel-vba

我有一个VBA即可在单独的工作表上使用按钮运行。但是,由于某些原因,当我单击按钮时VBA不起作用,当我使用VBA应用程序运行VBA时,VBA运行没有问题。运行的VBA Im看起来像这样。

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。现在,调试器告诉我最后一行运行时1004中存在错误

1 个答案:

答案 0 :(得分: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))"