选择excel表格(非工作表)上带VBA的所有行
我有一个连接到DB的表,我想做的是当用户单击该表中的单元格时:它选择表中的所有行。这是我的代码副本:选择excel表格(非工作表)上带VBA的所有行,vba,excel,Vba,Excel,我有一个连接到DB的表,我想做的是当用户单击该表中的单元格时:它选择表中的所有行。这是我的代码副本: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If inTabRange(ActiveCell) Then ActiveSheet.ListObjects("tabRecherche").ListRows(ActiveCell.row).Range.Select Else
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If inTabRange(ActiveCell) Then
ActiveSheet.ListObjects("tabRecherche").ListRows(ActiveCell.row).Range.Select
Else
MsgBox "Hello"
End If
End Sub
Private Function inTabRange(cellRange As Range) As Boolean
inRange = Not (Application.Intersect(cellRange, Range("Q14:AI700")) Is Nothing)
End Function
“tabRecherche”是我的表名,它的范围从Q14到AI700
我的问题是,当我调用函数“inTabRange”时,不管它是否返回True,代码都会进入Else部分并调用MsgBox
这可能与我如何使用应用程序有关。Intersect:我从互联网上复制了这一行
希望你能帮助我 此代码将用于工作表中的任何表格:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim LObj As ListObject
Set LObj = ActiveCell.ListObject
If LObj Is Nothing Then
MsgBox "Hello"
Else
Application.EnableEvents = False
Application.Intersect(LObj.Range, ActiveCell.EntireRow).Select
Application.EnableEvents = True
End If
End Sub
此代码将用于工作表中的任何表:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim LObj As ListObject
Set LObj = ActiveCell.ListObject
If LObj Is Nothing Then
MsgBox "Hello"
Else
Application.EnableEvents = False
Application.Intersect(LObj.Range, ActiveCell.EntireRow).Select
Application.EnableEvents = True
End If
End Sub
(此解决方案仅修复您的代码。Fadi的解决方案更优越。)
编辑:替换了ActiveSheet.Rows(Target.Row)。使用ActiveSheet.ListObjects(“tabRecherche”).Range.Rows.Select进行选择-因此现在它选择整个表,而不仅仅是行。哎呀
(此解决方案仅修复您的代码。Fadi的解决方案更优越。)
编辑:替换了ActiveSheet.Rows(Target.Row)。使用ActiveSheet.ListObjects(“tabRecherche”).Range.Rows.Select进行选择-因此现在它选择整个表,而不仅仅是行。哎呀。从纯逻辑的角度来看,我会将那些
Application.EnableEvents
语句保留在Application.Intersect.
条件块中。我还要补充一点,检查表名将完全符合OP的需要Hank You@user3598756,我也这么认为,但也许OP想要选择其他任何东西,而不是msgbox
。是的,msgbox只是为了测试。从纯逻辑的角度来看,我会保留那些应用程序。在else
条件块中启用围绕应用程序的事件语句。Intersect…
。我还想补充一点,检查表名将完全符合OP的需要谢谢@user3598756,我也这么认为,但OP可能想选择其他任何东西,而不是msgbox
。是的,msgbox只是用于测试