2011-09-13 126 views
0

我有一個web查詢,我通過刷新查詢開始處的單元來調用。類似如下:在Excel中對web查詢結果進行排序vba

Sheets(sheetBeingProcessed).Range(queryAdr).QueryTable.Refresh BackgroundQuery:=False 

我刷新使用VBA,點擊,我的宏遍歷所有表,刷新他們一個接一個,每一個回來了不同行數據的每一天(有時0行),這都是可以接受的,而且都很好看。

現在,我想按每張表的「到期日」列對結果進行排序。任何想法我可以做到這一點?

這兩個難點是,1如何判斷「到期日期」欄位在哪裏,這相當容易。 第二個問題...我如何排序我得到的結果?

我試圖激活每個工作表,並選擇範圍和排序,但沒有奏效

ActiveWorkbook.Worksheets(sheet).Activate 
ActiveWorkbook.Worksheets(sheet).Range(sortStartAddress).Select 
Dim resultRange As Variant 

Range(Selection, Selection.End(xlDown)).Select 
Range(Selection, Selection.End(xlToRight)).Select 
Set resultRange = ActiveWorkbook.ActiveSheet.Selection 

在下面的最後一行是失敗......

我敢肯定有必須是一種更簡潔的方式,而不必在激活它們的工作表和選擇範圍之間翻轉......這看起來很醜陋......任何想法?

回答

1

我不要認爲您必須激活每張紙以便對它們進行排序。

此外,您應該能夠通過使用CurrentRegion選項來選擇整個區域。看看這個作品對您嘗試什麼:

ActiveWorkbook.Worksheets(sheet).Range(sortStartAddress).Select 
Dim resultRange as Range 
set resultRange = selection.CurrentRegion.Select 
+0

有趣的是這一項工作..以前沒有。謝謝 – Charbel

1
ActiveWorkbook.Worksheets(sheet).Range(sortStartAddress).CurrentRegion.Sort 'add sort options... 
+0

喜歡你的回答比我自己更好。 – PaulStock

+0

好的,明天早上你會看看,但看起來很有希望。謝謝 – Charbel

+0

好吧,這是不夠的,因爲我需要指定排序鍵,並檢索我需要獲取當前區域。保羅的回答很有幫助。但是,無論如何,要學習的很好 – Charbel