Foxtable(狐表)用户栏目专家坐堂 → [求助]Excel表中多层表头自动筛选代码不完美


  共有2601人关注过本帖树形打印复制链接

主题:[求助]Excel表中多层表头自动筛选代码不完美

帅哥哟,离线,有人找我吗?
shenyl0211
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
[求助]Excel表中多层表头自动筛选代码不完美  发帖心情 Post By:2018/8/19 18:00:00 [只看该作者]

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
请问高手:有办法解决吗?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107745 积分:548064 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2018/8/20 9:11:00 [只看该作者]

蓝版:
     如果列名均为双层:第一列_1第一列_2第二列_1第三列_1,肯定没问题;
     但如果把第二列_1改成单层第二列,然后合并单元格(见下图,C1和C2单元格合并),就有问题了。

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


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107745 积分:548064 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/20 9:30:00 [只看该作者]

这个没有办法。存在合并单元格的情况下,使用代码选择会默认选中合并单元格所在的所有行。

 回到顶部