selectexcel表(不是工作表)上的所有行与VBA

我有一个表连接到一个数据库,我想要做的是当用户从这个表中单击一个单元格:它select表中的所有行。 这里是我的代码的副本:

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。

这可能是我如何使用Application.Intersect的一个问题:我从Internet复制了这一行。

希望你能帮我 !

此代码将与工作表中的任何表一起使用:

 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 
 Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If inTabRange(Target) Then ActiveSheet.ListObjects("tabRecherche").Range.Rows.Select Else MsgBox "Hello" End If End Sub Private Function inTabRange(cellRange As Range) As Boolean inTabRange = Not Application.Intersect(cellRange, ActiveSheet.ListObjects("tabRecherche").Range) Is Nothing End Function 

(这个解决scheme简单的修复你的代码,Fadi的解决scheme更好。)

编辑:replaceActiveSheet.Rows(Target.Row)。select与ActiveSheet.ListObjects(“tabRecherche”)。Range.Rows.Select – 现在它select整个表,而不仅仅是行。 哎呀。