Vba 要在其他工作表上运行的Excel宏

Vba 要在其他工作表上运行的Excel宏,vba,excel,Vba,Excel,我有一个宏应该在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 r

我有一个宏应该在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
两件事:

  • 使你的床单合格。由于宏是从
    Sheet2
    中的按钮调用的,因此范围是从该工作表而不是
    Sheet1
    实例化的
  • 如果要使用
    R1C1
    符号公式,请使用
    .FormulaR1C1
    而不是
    .Value
  • 这是您的代码的固定版本

    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
    

    让我们知道这是否有用。

    @Nanashi-这让我想起了一些事情。