在实际运用中对数据排序,采取录制宏的方式取得Sort方法代码, 由于理解得不够透彻,得出一些错误的理解: 1、Sort方法对非当前工作表无效; 2、Sort方法对隐藏的工作表无效。 但是在看完香川老师的2014年3月21日发的贴 再经过自己的反复测试后,知道上面两个观点是错误的,原因很简单:排序的数据范围是否指定了工作表,Sort参数Key引用的位置是否前面指定了工作表? 由于Sort语句的写法,前面是运行语句,中间有一个空格,后面才是参数, 因为有空格,所以前面语句指定的工作表并不对后面参数引用中生效,所以参数中还需要再指定,很多人都栽在这个地方,我就是例子。 今天发贴分享, 还有一个原因,就是想说一下香川老师的贴,有些地方容易让人误解或是关键点讲得不清楚(我相信香川老师肯定是精通的,但是在写文案的时候并不能完全表达她的意思)。 在这里我就把我的感悟分享一下,也帮帮其他有需要的人,因为香川老师的贴还是挺抢手的。 1、参数顺序有一个地方容易被忽略,就是下面红圈中的TYPE参数。 为什么这么说呢?大家仔细看一下参数的顺序,是不是很容易理解为:Key1,Order1,Key2,Order2,Key3,Order3……? 为什么三个排序关键字参数(一个关键字对应两个参数),唯独第二个关键字中间多一个Type参数呢? 什么意思?香川老师可没讲清楚。但是我相信很多人会忽略这个,那就会栽大跟头,因为每个参数都有固定的位置, 忽略一个,后面的顺序全部错乱。呵呵,那个查找错误的痛苦反正我是不想再经历了。 2、容易误导的地方,就是Header参数的位置(这个绝对与香川老师无关,只是阅读者的个人习惯) 图中蓝圈的位置是3,我就以为Header参数位于第三了,但是香川老师明确指出了代码中参数位于什么位置,如图中红圈位置。 这个呢,我是犯了这个错误,结果害得我可惨了。我之所以被误导也与贴子结尾部分有关,看下图: 图中“或根据默认为:”,不能这么说,这样写的默认就是手动仅指定了两个参数,关键字1和排序顺序,其他都默认。 而实战中,最少三个参数很重要,除了关键字1和排序顺序,标题行Header也很关键,这取决于排序区域是否选择了首行标题行, 如果包含首行标题,则必须指定Header为首行标题,不参与排序。 反之则指定为无标题,所有记录行进行排序。 如果不指定,则参数的意思让EXCEL自己去猜,这个会出大问题,反正我在实际开发写代码时,是经过反复测试得出的经验。 所以上面那一句“默认”真可谓“害人不浅”啊!呵呵,香川老师别怪我,是我理解有误,千万千万别生气哈! |
|
来自: jeamychu > 《Excel VBA》