excel - 复制粘贴不会触发worksheet_change

标签 excel vba macos

这是我需要做的:当我在工作表的单元格中写入内容时,我的 Worksheet_Change 代码应该检查单元格是否包含某些字符,然后替换这些字符。这部分代码工作正常。

但是,有一个稍微奇怪的行为。这是到目前为止的代码:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Target.Value = Replace(Target.Value, "ß", "ß")

        MsgBox "This is the value: " & Target.Value
    End Sub

发生的情况是,当我的剪贴板中有需要更改的字符时(使用 Ctrl+C)。当我双击单元格时,使用 Ctrl+V 将字符粘贴到单元格中,然后按 Enter,代码工作正常,字符被更改。 (注意:如果不双击,您将看不到光标。)

但是,如果我只是使用箭头键转到单元格并粘贴单元格中的其他内容,则不会发生任何情况。我怀疑 Worksheet_Change 甚至没有被触发,否则它至少会显示我的 MsgBox

(我不知道这是否与此相关,但我在 Mac 中使用 Excel 2010)

最佳答案

您可以在触发器工作表上使用 Worksheet_Calculate。

  • 创建一个新工作表,其中仅包含指向所需范围的链接 观看(即 =Sheet1!A1:B3)
  • 将名为 Worksheet_Calculate 的宏添加到触发器工作表
  • 现在,只要链接范围内的任何日期发生变化,就会触发触发表的重新计算,从而触发宏

当用户在相应的单元格中输入公式并且前导公式之一发生更改时,这也适用。

通过手动计算,只有当用户按 F9 时才会重新计算触发表和宏。

关于excel - 复制粘贴不会触发worksheet_change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049217/

相关文章:

vba - 在 VBA 中使用替换替换回车

excel - MS Excel 中的多个嵌套 IF 语句 - 括号不对?

VBA 串联返回数字,即使维度为字符串

macos - 尝试打印终端中的行数时出现错误 "xargs unterminated quote"

objective-c - 如何关闭窗口 OSX?

loops - 为什么这个 IF 语句不需要 End IF

excel - 通过旋转按钮启动不同的工作表

vba - 将 pdf 转换为 diff 格式的代码 - 不起作用

vba - 定义对象在excel表中的位置

mysql.server start 不会启动 mysql 服务器