我正在創建一個鏈接到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'設置手錶的原因,以驗證這些值是否正確分配 –