【问题标题】:Office 365 for Mac: Execute VBA macro on table changeOffice 365 for Mac:在表更改时执行 VBA 宏
【发布时间】:2017-06-19 05:59:12
【问题描述】:

我目前正在使用 Office 365 订阅运行 Excel for Mac。每当某个单元格值发生变化时,我都会尝试执行 VBA 宏。我已经在网上查看并看到了许多使用Worksheet_Change Sub 的代码示例,但是它对我不起作用。这是我的代码目前的样子:

Private Sub Worksheet_Change(ByVal Target as Range) 
    Target.Font.ColorIndex = 5 
End Sub

我正在尝试在四张纸中的第二张上运行它。我在第二张纸上点击了View Code,所以我在正确的纸上。

有人知道它为什么/可能不起作用吗?它在 Excel for Mac 中不起作用吗?

如果您需要更多信息,请告诉我。

谢谢

【问题讨论】:

  • 您确定更改了单元格中的值。如果单元格只是重新计算一个新值,它不会触发。
  • 我点击进去并在里面输入了一些东西。这是否也算作重新计算?
  • 如果你真的在单元格中输入了一些新的东西(即使它是一个新的公式),它应该已经被触发了。所以也许它一个在 Mac 上不起作用的功能 - 恐怕我不确定 Mac 版本有什么限制。 (要调试,您可以尝试在事件代码中放置 MsgBox "running" 以查看它是否真的在触发。如果不是,您应该检查您是否在某个阶段没有意外禁用事件,因此输入 @ 987654325@ 在即时窗口中,然后再试一次。在那之后,我没有想法了。)
  • 是的,我已经偶然发现了启用事件解决方案,但上面实际上是我模块中唯一的代码。可悲的是,MsgBox 也不能正常工作,我什至可以将语法错误放入子例程中,excel 不会显示错误。接下来我会在windows上试试。感谢您的帮助:)
  • Excel for Mac 似乎只是一大堆麻烦。大多数使 Excel 变得出色的好东西都不能在 Mac 上运行。也许您可以安装 Parallels,然后运行 ​​Excel for Windows。

标签: excel vba macos


【解决方案1】:

我之前遇到过类似的问题,因为您的症状听起来像我的(代码甚至没有执行),我怀疑您的代码实际上不在正确的工作表上。 Mac 中的 VBA 窗口比 Windows 中的详细得多,我觉得它令人困惑。

确保在左侧窗格中单击相应的下拉菜单

VBAProject(WorkbookName) -> Microsoft Excel Objects -> Sheet2

并在那里插入 Worksheet_Change 函数。

此外,如果您希望颜色仅在特定范围内发生变化,则需要使用 Intersect:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will cause an alert when they are changed.
    Set KeyCells = Range("A1:Z99")

    'This part executes only if the cell being changed is in KeyCells
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then

        Target.Font.ColorIndex = 5 

    End If

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多