【问题标题】:Run macro at specific time when check box is checked(manual calculation)选中复选框时在特定时间运行宏(手动计算)
【发布时间】:2018-07-02 13:37:47
【问题描述】:

如果选中复选框,我会尝试在特定时间在 Excel 中运行宏。 它正在正常工作,唯一的问题是它只有在 工作簿设置为自动计算,我需要将工作簿设置为手动计算。

这是我在该文件中使用的 VBA 代码: 表 1:

Private Sub Worksheet_Calculate()
Dim time_dt As Date
time_dt = Cells(1, 7)

If Range("C1").Value = "YES" Then
Application.OnTime TimeValue(time_dt), "FillFirstColumn"
End If

End Sub

这是模块 1 的代码:

Sub FillFirstColumn()
Range("A1:A20").Value = "YES"
End Sub

当我点击复选框时,单元格 D1 从 FALSE 变为 TRUE。在单元格 C1 中,我有这个公式 =IF(D1=TRUE,"YES","NO")。除非工作簿设置为自动,否则 C1 不会重新计算。

根据下面评论的建议,我已将此 VBA 代码添加到 sheet1:

Private Sub CheckBox1_Click()
ThisWorkbook.Worksheets("Sheet1").Cells(1, "C").Calculate
End Sub

但 C1 中的公式仍未重新计算。

【问题讨论】:

  • 您可以尝试公开共享链接到信誉良好的文件共享(Google 驱动器、Dropbox 等),允许重新分发启用宏的工作簿,但人们通常不愿意(并且理所当然地)打开启用宏的工作簿从互联网下载的工作簿。

标签: excel vba


【解决方案1】:

您可以计算所有打开的工作簿、一个包含许多工作表的工作簿、一个工作表、一个工作表中的一系列单元格或单个单元格。

thisworkbook.worksheets("sheet1").cells(2, "B").calculate

上面将重新计算运行子过程的工作簿中的单个单元格(Sheet1!B2)。

【讨论】:

  • 基本上问题是,当我单击复选框时,我需要重新计算特定单元格才能在特定时间运行宏。它在工作簿设置为自动计算时有效,但不是设置为手动计算时工作
  • 是的,我明白了。我的回复旨在建议无需 xlCalculationAutomatic 即可直接通过在计时器上运行的子过程重新计算需要重新计算的任何内容。
  • 我知道你上面提到的重新计算命令,问题是当我点击一个复选框时我不知道如何激活单元格的重新计算。
  • 可能在Private Sub CheckBox1_Click() 内?
  • 我试过了,但由于某种原因它不起作用。当我单击复选框时,单元格 D1 从 FALSE 变为 TRUE。在单元格 C1 中,我有这个公式 =IF(D1=TRUE,"YES","NO")。除非工作簿设置为自动,否则 C1 不会重新计算。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2013-12-10
  • 1970-01-01
相关资源
最近更新 更多