我写了一个简单的宏
=IF(C2=H2,1,))因此,每当C2的值等于H2的值时,就会弹出一个窗口,上面写着"HI“
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim rng As Range
Set rng = Range("H2")
If Not Intersect(Target, rng) Is Nothing Then
If rng = "1" Then
MsgBox "Cell " & _
rng.Address & " = hi"
End If
End If
Set rng = Nothing
End Sub问题是,我需要它来使声音以及弹出,更重要的是,我需要它做1000行(即。c2,c3,c4 so to c1000)。不要告诉我我需要粘贴和复制上千次。
发布于 2013-06-17 21:59:54
很难理解你到底想要实现什么,因为你的问题不是很清楚。如果我理解正确,当H列中的值发生更改时,您可能希望检查它是否与C列中的相应单元格匹配。如果这些值匹配,您希望显示一个消息框并播放声音。这段代码完全可以做到这一点。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error Resume Next
If Target.Column = 8 Then
If Target.Value = Target.Offset(0, -5).Value Then
Beep
MsgBox "Cell " & Target.Address(False, False) & " = Hi"
End If
End If
On Error GoTo 0
End Sub发布于 2013-06-17 22:03:43
尝尝这个
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
Application.EnableEvents = False
If Not Intersect(Target, Range("C2:C1000")) Is Nothing Then
If Target.Value = Target.Offset(, 5).Value Then
Beep
MsgBox "Blah Blah"
End If
'~~> Added Code to handle changes in Col H as well. Thanks to ripster
ElseIf Not Intersect(Target, Range("H2:H1000")) Is Nothing Then
If Target.Value = Target.Offset(, -5).Value Then
Beep
MsgBox "Blah Blah"
End If
End If
Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub我总是建议使用适当的错误处理。您可能还想看看this
如果有多次粘贴,上面的代码不能处理这种情况。如果你也想检查一下,请告诉我:)
https://stackoverflow.com/questions/17148829
复制相似问题