以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]Excel表中多层表头自动筛选代码不完美  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=123625)

--  作者:shenyl0211
--  发布时间:2018/8/19 18:00:00
--  [求助]Excel表中多层表头自动筛选代码不完美
Excel表中多层表头筛选:
如果手工选择表头的最后一行再点筛选按钮,肯定是正常的。
但如果用下列代码,则只要存在单层表头就只会选择第一层筛选,而不可能是最后一层:
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(filename)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.Select \'在选定单元格之前,必须先选定工作表
Ws.Range("A2:H2").Select 
\'或Ws.Rows("2:2").Select
ws.Range("F2").Activate \'F2是第一个双层表头
app.Selection.AutoFilter
请问高手:有办法解决吗?

--  作者:有点蓝
--  发布时间:2018/8/19 20:05:00
--  
测试没有问题:

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\问题\\123.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.Select \'在选定单元格之前,必须先选定工作表
Ws.Range("A2:H2").Select 
\'或Ws.Rows("2:2").Select
ws.Range("A2").Activate \'F2是第一个双层表头
app.Selection.AutoFilter
Wb.save
app.quit

--  作者:shenyl0211
--  发布时间:2018/8/20 9:11:00
--  
蓝版:
     如果列名均为双层:第一列_1第一列_2第二列_1第三列_1,肯定没问题;
     但如果把第二列_1改成单层第二列,然后合并单元格(见下图,C1和C2单元格合并),就有问题了。

图片点击可在新窗口打开查看此主题相关图片如下:2345截图20180820090847.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2018/8/20 9:30:00
--  
这个没有办法。存在合并单元格的情况下,使用代码选择会默认选中合并单元格所在的所有行。