我有一个应该在SHEET1上运行的宏。然后我有另一张表(SHEET2),它有一个按钮供用户点击以便能够运行宏。我的问题是,我在按钮中分配了宏,但没有任何反应。我尝试添加此行Sheet1.Range("A2:A" & lastrow)
,但宏停止并完全完成任务。我的代码有问题吗?请帮忙。
Sub DC1()
Dim lastrow&, rng1 As Range, rng2 As Range
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Set rng1 = Range("A2:A" & lastrow).SpecialCells(xlCellTypeConstants)
Set rng2 = rng1.Offset(0, 6)
rng2.Value = "=AVERAGE(RC[-6]:RC[-2])"
Set rng2 = rng1.Offset(0, 7)
rng2.Value = "=SUM(RC[-5]:RC[-1])*0.5"
Set rng2 = rng1.Offset(0, 9)
rng2.Value = "=CONCATENATE(RC[-9],RC[-8],RC[-7],RC[-6],RC[-5],RC[-4])"
End Sub
答案 0 :(得分:2)
两件事:
Sheet2
中的按钮调用宏,所以范围是从该工作表而不是Sheet1
实例化的。.FormulaR1C1
符号公式,请使用.Value
代替R1C1
。这是您的代码的固定版本。
Sub DC1()
Dim WS1 As Worksheet
Dim LastRow As Long, Rng1 As Range, Rng2 As Range
Set WS1 = ThisWorkbook.Sheets("Sheet1")
With WS1
LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
Set Rng1 = .Range("A2:A" & LastRow).SpecialCells(xlCellTypeConstants)
Set Rng2 = Rng1.Offset(0,6)
Rng2.FormulaR1C1 = "=AVERAGE(RC[-6]:RC[-2])"
' ... Other code.
End With
End Sub
如果有帮助,请告诉我们。