如何解决函数返回时的错误91

时间:2017-10-09 15:27:51

标签: excel vba excel-vba

我正在创建一个链接到TFS查询的宏。在某些时候,我使用一个刷新每个结果表的函数,之后,我需要知道表范围,因此我的代码如下所示:

Function RefreshQuery(shtTFSExcel_Name As String) As Range
Dim activeSheet As Worksheet
Dim teamQueryRange As Range
Dim refreshControl As CommandBarControl
Dim lr As Integer, lc As Integer

Set refreshControl = FindTeamControl("IDC_REFRESH")
  If refreshControl Is Nothing Then
    MsgBox "Could not find Team Foundation commands in Ribbon. Please make sure that the Team Foundation Excel plugin is installed.", vbCritical
    Exit Function
  End If

Application.ScreenUpdating = False
Set activeSheet = ActiveWorkbook.activeSheet
Set teamQueryRange = Worksheets(shtTFSExcel_Name).ListObjects(1).Range
teamQueryRange.Worksheet.Select
teamQueryRange.Select
refreshControl.Execute
activeSheet.Select
Application.ScreenUpdating = True

lr = teamQueryRange.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lc = teamQueryRange.Rows(2).Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

Set RefreshQuery = Cells(lr, lc)

End Function

现在,当我运行它时,它工作正常,直到它到达End Function语句,返回错误代码91(我正在监视RefreshQuery,这会创建预期范围)。我无法确定使其失败的原因,因为它使用Set语句来分配对象,并且我有一个Range变量来获取函数的结果。 任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

检查teamQueryRange是否为Nothing,在本例中为refresh set teamQueryRange。