这是我需要做的:当我在工作表的单元格中写入内容时,我的 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/