我想利用VB程序使EXCEL文件数据按某一列进行排序,在vb中编制了如下程序,但是到最后一句就是出错,错误信息是:实时错误1004,类range的sort方法无效
Dim excel As Object
Dim workbook As Object
Dim worksheet As Object
Set excel = CreateObject( "excel.application ")
Set workbook = excel.WorkBooks.Open( "C:\电话簿.xls ")
Set worksheet = workbook.ActiveSheet
worksheet.Range( "A1:B32 ").Sort Key1:=worksheet.Range( "A1 "),Order1:=xlAscending, Header:=xlGuess
如果把最后一句改成worksheet.Range( "A1:B32 ").Sort Key1:=worksheet.Range( "A1 ")是可以的,但这样标题行也当作数据一起进行排序
请问专家是什么原因?另外,我如果要用VB来检测EXCEL表格是按照哪一列进行排序的,又该如何编程?
worksheet.Range( "A1:B32 ").Sort(Key1:=worksheet.Range( "A1 "),Order1:=xlAscending, Header:=xlGuess)
在后面sort后面加个括号试下。
1、改成worksheet.Range( "A2:B32 ").Sort Key1:=worksheet.Range( "A1 "),这样标题行就不会当作数据一起进行排序啦
2、用VB判断EXCEL哪一列排序,你可能需要遍历整个表,先获得列数和行数,外循环为列数,内循环为行数,内循环中判断当前行数据是否总是大于等于上一行(或者判断当前行数据是否总是小于等于上一行),如果符合这个条件,该列为正序或逆序,此时外循环可终止,如果没有列符合以上条件,则该表没有哪一列是排序的。
'对sheet1表的1到5行按A列进行升序排序(降序排序把最后的参数1改为2)
'如果有标题行,把("A1")改成("A2")
xlsWs.Range("A1:B5").Sort xlsWs.Range("A1"), 2