[英]VBA Code to automatically add a comment if a cell contains a certain letter
我上周刚开始学习 VBA,现在我正在尝试解决以下问题:如果用户输入某个字母(并且只有这些指定的字母),则应自动将注释添加到所选单元格。 评论应该包含一个小的“标题”,然后是一个解释性文本,由用户输入。 显示的代码确实有效,但仅适用于我测试它的第一个单元格。 所以,当我第一次执行它时,评论会自动出现我想要的指定文本,但在下一个单元格中却没有。 即使重新启动 Excel 也无济于事 - 所以现在即使是第一个单元格也不会创建评论。 这就是为什么我很困惑。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
Application.EnableEvents = False
If Target.Value = "" Then
Application.Undo
x = Target.Value
Target.Value = ""
On Error Resume Next
If (x = "A") Or (x = "B") Or (x = "C") Or (x = "D") Or (x = "E") Then Target.Comment.Delete
On Error GoTo 0
ElseIf Target.Value = "A" Then
Target.AddComment ("explanationA: ")
ElseIf Target.Value = "B" Then
Target.AddComment "explanationB: "
ElseIf Target.Value = "C" Then
Target.AddComment "explanationC: "
ElseIf Target.Value = "D" Then
Target.AddComment "explanationD: "
ElseIf Target.Value = "E" Then
Target.AddComment "explanationE: "
End If
End Sub
我已指定“工作表”和“更改”。
还有一个额外的问题,我会感兴趣:有没有可能,excel 会在评论生成后自动选择评论,这样用户就可以输入一些解释性信息,而无需手动输入 select 评论?
帮助表示赞赏! 非常感谢您!
快速简单的事情如下所示;
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Select Case Target.Cells
Case Is = "A": Target.AddComment ("explanationA: ")
Case Is = "B": Target.AddComment ("explanationB: ")
Case Is = "C": Target.AddComment ("explanationC: ")
Case Is = "D": Target.AddComment ("explanationD: ")
Case Is = "E": Target.AddComment ("explanationE: ")
End Select
On Error Resume Next
End Sub
只要记住将代码放在您希望它发生的工作表上,它似乎也区分大小写。
您可以在模块的声明部分(顶部)使用Option Compare Text
来允许整个模块的比较不区分大小写。
尽管子例程“MyCompare”中的代码是相同的,但它们的结果是不同的:
Sub MyCompare
Debug.print "a" = "A"
' Prints False
End Sub
Option Compare Text
Sub MyCompare
Debug.Print "a" = "A"
' Prints True
End Sub
但无论如何,让我们来解决您的实际问题。 您的代码中有这一行:
Application.EnableEvents = False
请注意您的代码第一次工作的原因是因为您捕获了Worksheet_Change
事件。 但是现在您只是禁用了此代码中的事件并且从未将其重新打开,因此您将无法再运行您的Worksheet_Change
子例程。
只需确保在退出代码之前将其重新打开即可。 此外,明智的做法是以启用事件的方式处理您的错误,而不是过早停止您的代码,这会使它们保持禁用状态。
我通常在不运行 Sub 的情况下启用事件的方法是使用调试 window。 在 VBE 中按Ctrl + G打开此 window,然后在 window 中只需键入Application.EnableEvents = True
并按Return即可更改该属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.