我正在创建一个链接到TFS查询的宏。在某些时候,我用的就是刷新每个结果表的功能,并在此之后,我需要知道该表的范围,因此我的代码看起来是这样的:如何解决函数返回错误91
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变量来获取函数的结果。 任何帮助将不胜感激。提前致谢。
您是否检查过找到这些值,即lr和lc是实际的数字? – SJR
此外,你最好摆脱'teamQueryRange.Worksheet.Select','teamQueryRange.Select'和'activeSheet.Select',并将你的'Set'改成'Set RefreshQuery = teamQueryRange.Cells(lr, lc)'或类似的。 – CLR
@SJR,是的,这正是我通过'RefreshQuery'设置手表的原因,以验证这些值是否正确分配 –