【发布时间】:2019-03-01 12:29:56
【问题描述】:
我有一个包含类别标题的数据库,其中包含 .Interior.Color 和 .Font 格式,当单击类别标题单元格时,它会应用于选定的行。
我想添加一个功能,当双击一个类别标题单元格时,文档中与该类别不匹配的所有行都将被隐藏。
我在 Sheet1(代码)中添加了以下内容:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, HideRow As
Boolean)
If Not Application.Intersect(Target, Range("C1:W1")) Is Nothing Then
LstRow = Cells.Find(What:="*", After:=Range("A1"), lookat:=xlPart, _
LookIn:=xlFormulas, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, MatchCase:=False).Row
'Finds last row with data
Set Dyn_AllEntries = ActiveSheet.Range("C5:C" & LstRow) 'range w/ all data
If HiddenRows <> True Then 'Checks to see if the macro was already run
For Each cl In Dyn_AllEntries
If cl.Offset(0, 11) <> Target Then 'check if category matches
cl.EntireRow.Hidden = True 'if not, hide row
End If
Next cl
HiddenRows = True 'set boolean, to verify the macro is active
ElseIf HiddenRows = True Then 'check if macro is active
For Each cl In Dyn_AllEntries
If cl.Offset(0, 11) <> Target And LCase(cl.Offset(0, -2)) <> _
"true" Then 'if category not match & row not hidden by other macro
cl.EntireRow.Hidden = False 'unhide row
End If
Next cl
HiddenRows = False 'set boolean so I know macro isn't active
End If
End If
End Sub
现在,我在选择单元格时编写的代码在编译时给了我一个错误:
过程声明与同名事件或过程的描述不匹配。
我的“单击”代码命名为Private Sub Worksheet_SelectionChange(ByVal Target As Range, HideText As Boolean),而我的“双击”代码命名为Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, HideRow As Boolean)。
两者都在 Sheet1(代码)模块中。我的“单击”代码没有改变,因为在我添加“双击”代码之前它就可以工作了。
难道不能对同一个单元格运行两个不同的宏来执行不同的选择操作吗?
【问题讨论】:
-
那些事件不支持
HideText As Boolean参数和HideRow As Boolean参数。在您提供的代码中,HideRow根本没有使用,但HiddenRows是相关的? -
两者都会抛出相同的编译错误。如果“单击”代码包含
HideText参数,那么它之前就无法正常工作。 -
将我的布尔尺寸标注移动到代码中(而不是子标题)并匹配“HiddenRows”的变量名称解决了我的问题。非常感谢你们!
标签: excel vba click double-click