Vba 如果范围中的单元格包含值,则在相邻单元格中插入注释
我希望标题能澄清目标。我所有的尝试都以惨败告终,例如:Vba 如果范围中的单元格包含值,则在相邻单元格中插入注释,vba,excel,Vba,Excel,我希望标题能澄清目标。我所有的尝试都以惨败告终,例如: Private Sub Worksheet_Change(ByVal Target As Range) With Range("A1:A10") = "blah" Range("A1:A10").Offset(0, 1).AddComment "fee" Range("A1:A10").Offset(0, 2).AddComment "fi" Range("A1:A10").Offs
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("A1:A10") = "blah"
Range("A1:A10").Offset(0, 1).AddComment "fee"
Range("A1:A10").Offset(0, 2).AddComment "fi"
Range("A1:A10").Offset(0, 3).AddComment "fo"
End With
End Sub
我也尝试过这种方法:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Range("A1:A10")
If cell.Value = "blah" Then
cell.Value.Offset(0, 1).AddComment "fee"
cell.Value.Offset(0, 2).AddComment "fi"
cell.Value.Offset(0, 3).AddComment "fo"
End If
Next
End Sub
这是:
Private Sub Worksheet_Change(ByVal Target As Range)
With Range(Target.Offset(0, 1).Address).AddComment
Range(Target).Offset(0, 1).Comment.Visible = False
Range(Target).Offset(0, 1).Comment.Text Text:="fee"
End With
End Sub
请注意,该代码旨在作为插入到特定工作表中的事件处理程序。我显然误解了VBA语法中有关范围的内容。如果您能为这些潜艇提供任何帮助,我们将不胜感激
跟进:蒂姆建议使用工作表进行计算,效果很好。我通过Tim代码的最后一个变体实现了我的目标:
Private Sub Worksheet_Calculate()
Dim rng As Range, cell As Range
'see if any changes are in the monitored range...
Set rng = Range("A1:A10")
If Not rng Is Nothing Then
For Each cell In rng.Cells
If cell.Value = "blah" Then
cell.Offset(0, 1).AddComment "fee"
cell.Offset(0, 2).AddComment "fi"
cell.Offset(0, 3).AddComment "fo"
End If
Next
End If
End Sub
蒂姆,谢谢你的密码。它按预期运行,你应该得到表扬。然而,我在最初的请求中没有预料到一个复杂的情况。在上面,条件触发器字符串“blah”不是简单的用户类型条目,而是由应用程序工作表函数生成的。这会导致事件处理程序代码不运行。当函数替换为用户键入的字符串时,代码可以工作。如果“blah”是由工作表函数生成的,您知道如何修改代码以使其工作吗?Regardsy您可以使用工作表\u calculate事件并检查感兴趣范围内的值。由于没有目标参数,您可以在A1:A10中循环通过单元格。谢谢,蒂姆。仍在学习这一切意味着什么,但欣赏其中的指点。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, cell as Range
On Error Goto haveError
'see if any changes are in the monitored range...
Set rng = Application.Intersect(Target, Me.Range("A1:A10"))
If Not rng is Nothing Then
'Next line prevents code updates from re-triggering this...
' (Not really needed if you're only adding comments)
Application.EnableEvents=False
For Each cell In rng.Cells
If cell.Value = "blah" Then
cell.Offset(0, 1).AddComment "fee"
cell.Offset(0, 2).AddComment "fi"
cell.Offset(0, 3).AddComment "fo"
End If
Next
Application.EnableEvents=True
End If
Exit Sub
haveError:
msgbox Err.Description
Application.EnableEvents=True
End Sub