选择excel表(不是工作表)w / VBA上的所有行

时间:2017-03-17 11:50:50

标签: excel vba excel-vba

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

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的一个问题:我从互联网上复制了这一行。

希望你能帮助我!

2 个答案:

答案 0 :(得分:3)

此代码适用于工作表中的任何表:

launchRequest

答案 1 :(得分:1)

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

(此解决方案只是修复了您的代码.Fadi的解决方案非常出色。)

编辑:替换ActiveSheet.Rows(Target.Row)。选择ActiveSheet.ListObjects(“tabRecherche”)。Range.Rows.Select - 所以现在它选择整个表,而不仅仅是行。糟糕。