Intersect并没有给我范围,但值

时间:2017-06-02 06:23:37

标签: excel vba excel-vba

我尝试使用下面的函数来提取某些变量的位置,以便在活动公式中的另一个工作表上进行引用,但有时只需要该值。如果它给了我范围我可以使用相同的功能。 intersect方法表示它为您提供了一个范围,但在一个位置上它只返回值。

Function TablePull(tableName As String, columnName As String) As Variant
    Dim testVar As Variant
    Dim lo As Excel.ListObject
    Dim ws As Excel.Worksheet

    Set ws = ThisWorkbook.Worksheets(ThisWorkbook.Sheets(strWorkingSheetName).Index - 1)
    Set lo = ws.ListObjects(tableName)

    TablePull = Application.Intersect(lo.ListRows(1).Range, lo.ListColumns(columnName).Range)
End Function

1 个答案:

答案 0 :(得分:2)

  1. 将您的函数声明为 Range 而不是 Variant

    Function TablePull(tableName As String, columnName As String) As Range
    
  2. 使用Set设置TablePull范围

    Set TablePull = Application.Intersect(lo.ListRows(1).Range, lo.ListColumns(columnName).Range)
    
  3. 我建议永远不要使用 Variant ,除非你真的需要。 Variant 是最糟糕的类型,在大多数情况下,有一个比使用 Variant 更好的解决方案。然而,在某些情况下,您需要使用 Variant