【问题标题】:Function on selection of worksheet工作表选择功能
【发布时间】:2015-10-16 15:24:23
【问题描述】:

我正在尝试编写一个 VBA 函数来获取一个函数(“汇总”),以便在选择工作表时更新某个范围的值。

我对特定工作表代码中的不同工作表重复了此操作,但 我不知道如何创建单个函数,该函数将使用工作表名称和范围名称(例如“rngXF” ) 和汇总函数的值(例如“XF”)

Private Sub Worksheet_Activate()
Dim c As Range
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

For Each c In Range("rngXF")
    c.Value = Rollup(c, "XF")
Next c

Application.Calculation = xlCalculationAutomatic
Application.Calculate
Application.ScreenUpdating = True
End Sub

【问题讨论】:

  • 只是一个想法,使用 sheetname 和 range 参数创建一个 sub,然后使用 activate 触发它并将值传递给 sub 以实际执行它
  • 1) 这个“汇总”功能已经实现了吗? 2)您可以使用如下输入参数创建一个子:(Sub Test(ByVal param1 as Integer,ByVal param2 as String))。
  • @MarcoGetrost 是的 - 它总结了其他工作表上特定单元格的值,工作表名称包含“x”。潜艇应该放在哪里?
  • 听起来您想要 Workbook_SheetActivate(ByVal Sh As Object) 中的某些内容。它是 Workbook 的一种方法,但每次激活一张工作表时都应该触发它。

标签: vba excel


【解决方案1】:

您可以将其放置在您希望 RollUp 工作的任何工作表模块中:

Private Sub Worksheet_Activate()
    Call Calculate_RollUp(Me, "rngXF", "XF")
End Sub

并将其放在常规模块中:

Public Sub Calculate_RollUp(SheetObject As Worksheet, Range_Name As String, RollUp_Argument As String)
Dim c As Range
With Application
    .EnableEvents = False
    .Calculation = xlCalculationManual
    .ScreenUpdating = False

    For Each c In SheetObject.Range(Range_Name)
        c.Value = Rollup(c, RollUp_Argument)
    Next c


    .Calculation = xlCalculationAutomatic
    .Calculate
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多