工作表select更改不起作用
我有一个单元格的select更改下面的代码search一个单独的工作表:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.CountLarge > 1 Then Exit Sub If Target.Value = vbNullString Then Exit Sub Dim Finder, ClickRange Set ClickRange = ThisWorkbook.Sheets("Sheet3").Range("A:A") If Intersect(Target, ClickRange) Is Nothing Then Exit Sub Set Finder = ThisWorkbook.Sheets("Sheet4").Range("A:A").Find(Target.Value, LookAt:=xlWhole) If Finder Is Nothing Then Exit Sub MsgBox (Finder.Row) End Sub
但是,即使在ThisWorkbook中我有以下代码启用事件代码不起作用
Private Sub Workbook_Open() Application.EnableEvents = True End Sub
我的表名如下
任何想法我可能做错了什么?
打开立即窗口并键入?Application.EnableEvents
你得到了什么? 是对还是错?
如果你得到True,一切都很好,但是如果你得到False,那就意味着事件被禁止(不是因为select改变事件代码,而是因为工作簿中的其他代码)。
要再次启用它,在即时窗口中键入Application.EnableEvents = True 。
现在将下面的代码放在Sheet3 Module上,看看它是否适合你。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.CountLarge > 1 Then Exit Sub Dim sws As Worksheet Dim Finder As Range Set sws = Sheets("Sheet4") If Not Intersect(Target, Range("A:A")) Is Nothing Then If Target <> "" Then Set Finder = sws.Range("A:A").Find(Target.Value, lookat:=xlWhole) If Not Finder Is Nothing Then MsgBox Finder.Row Else MsgBox Target.Value & " was not found on " & sws.Name & ".", vbExclamation, "Not Found!" End If End If End If End Sub
尝试启用和禁用下面的事件。 这将不仅确保Events
被启用,而且将避免在循环中调用事件的潜在问题。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error Goto errExit Application.EnableEvents = False If Target.CountLarge > 1 Then Exit Sub If Target.Value = vbNullString Then Exit Sub Dim Finder As Range ', ClickRange 'Set ClickRange = ThisWorkbook.Sheets("Sheet3").Range("A:A") '/* If this code is in Sheet3, you can use below */ If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub Set Finder = _ ThisWorkbook.Sheets("Sheet4").Range("A:A").Find(Target.Value, _ LookAt:=xlWhole) If Finder Is Nothing Then Exit Sub MsgBox (Finder.Row) errExit: Application.EnableEvents = True End Sub
试试这个,让我们知道你得到什么。 希望这可以帮助。