2011-09-13 81 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