以下是我需要做的事情:当我在工作表中的单元格中写入内容时,我的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)
答案 0 :(得分:2)
您可以在触发器表上使用Worksheet_Calculate。
当用户在相应的单元格中输入公式并且其中一个前驱更改时,这也有效。
通过手动计算,只有在用户按下F9时才会重新计算触发页和宏。
答案 1 :(得分:1)
使用Worksheet_Change事件时始终使用EnableEvents属性。有关详细信息link
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo err_rout
Application.EnableEvents = False
If Target.Count > 1 Then Exit Sub
Target.Value = Replace(Target.Value, "ß", "ß")
MsgBox "This is the value: " & Target.Value
err_rout:
Application.EnableEvents = True
End Sub
答案 2 :(得分:0)
If Target.Column = 3 Then
Dim startRow As Integer
Dim endRow As Integer
startRow = Target.Row
endRow = Target.Row + Target.Count - 1
For i = startRow To endRow
' blah blah blah
也许有帮助