您的位置:程序门 -> vb -> vba



如何利用vb程序使excel文件数据按某一列进行排序


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何利用vb程序使excel文件数据按某一列进行排序
发表于:2007-02-23 21:07:25 楼主
我想利用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表格是按照哪一列进行排序的,又该如何编程?
发表于:2007-02-24 15:55:471楼 得分:0
怎么没人回答啊
发表于:2007-02-25 09:02:572楼 得分:0
worksheet.range( "a1:b32 ").sort(key1:=worksheet.range( "a1 "),order1:=xlascending,   header:=xlguess)
在后面sort后面加个括号试下。
发表于:2007-02-25 13:34:233楼 得分:0
在后面sort后面加个括号也不行,在编辑程序的时候就出现错误:缺少:=

还有,我关键是要解决如何用vb来检测excel表格是按照哪一列进行排序的
发表于:2007-03-07 09:10:334楼 得分:0
你分语句执行,找到问题点,再查看帮助,多测试!
发表于:2007-03-07 17:08:365楼 得分:0
我是要解决如何用vb来检测excel表格是按照哪一列进行排序的,现在我无法得知相关的属性名
发表于:2007-03-07 17:41:106楼 得分:0
1、改成worksheet.range( "a2:b32 ").sort   key1:=worksheet.range( "a1 "),这样标题行就不会当作数据一起进行排序啦

2、用vb判断excel哪一列排序,你可能需要遍历整个表,先获得列数和行数,外循环为列数,内循环为行数,内循环中判断当前行数据是否总是大于等于上一行(或者判断当前行数据是否总是小于等于上一行),如果符合这个条件,该列为正序或逆序,此时外循环可终止,如果没有列符合以上条件,则该表没有哪一列是排序的。

以上供参考
发表于:2007-03-08 11:05:127楼 得分:0
worksheet.range( "a2:b32 ").sort   key1:=worksheet.range( "a1 ")...
发表于:2007-03-08 20:47:208楼 得分:0
to   okmao_jj(小菜)

你所说的检验方法是可行,我也看到过现成的程序,只是太麻烦了,有参考书上说excel能记住前一次排序的关键字,所以我想肯定有一个属性值记住了这个关键字的。我在vb中调试程序时,使用监视器观察worksheet对象,但就是找不出想像中的哪个关键字
发表于:2007-03-08 22:16:159楼 得分:0
况且okmao_jj(小菜)所示方法不能解决这种情况:如果练习者选择了某一整列进行排序,当出现“排序警告”时,又选了“以当前选定区域排序”,这样的排序是错误的,而你的方法不能检测这种情况。
发表于:2007-03-14 20:18:5010楼 得分:0
看来只能用循环程序遍历来解决这个问题了


快速检索

最新资讯
热门点击