ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zhaogang1960

[原创] 使用vba生成汇总多个工作簿的多工作表数据透视表SQL命令文本[46楼有更新]

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-8 20:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:SQL应用
fghcgdfgdgdfgd

TA的精华主题

TA的得分主题

发表于 2018-9-30 11:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-10-4 10:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-3-6 01:27 | 显示全部楼层
感谢楼主分享,小弟有个问题请教楼主和各位大佬:因为不同的工作簿中的工作表标题字段有30多个,甚至更多,原来的窗体无法全部显示出来,不方便勾选所需标题,要是能把附图绿色圈起来的部分,有个“拖动杆”可以实现看到所有的标题字段就方便筛选了,比如拖动可见40个标题,使用者可以视情况只勾选需要的比如15个标题。
不知道这样的功能要如何来实现?
谢谢各位:)

IMG_1530.PNG

TA的精华主题

TA的得分主题

发表于 2019-3-7 11:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
呼唤大神帮忙啊,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-7 23:34 | 显示全部楼层
paul1115 发表于 2019-3-6 01:27
感谢楼主分享,小弟有个问题请教楼主和各位大佬:因为不同的工作簿中的工作表标题字段有30多个,甚至更多, ...

Private Sub UserForm_Initialize()
    If d.Count > 20 Then Me.Width = Me.Width + WorksheetFunction.RoundUp((d.Count - 20) / 2, 0) * 60 '新加,如果标题字段大于20个,则相应加宽窗体宽度
    With ListView1 '为ListView1设置标题
        .ColumnHeaders.Clear
        .View = lvwReport
        .Gridlines = True
        .LabelEdit = lvwManual
        .CheckBoxes = True
        .ColumnHeaders.Add , , " 工作簿", 145
        .ColumnHeaders.Add , , "工作表", 70
    End With
    TextBox1.MultiLine = True '文本框多行
    TextBox2.MultiLine = True '文本框多行
End Sub

TA的精华主题

TA的得分主题

发表于 2019-3-17 14:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaogang1960 发表于 2019-3-7 23:34
Private Sub UserForm_Initialize()
    If d.Count > 20 Then Me.Width = Me.Width + WorksheetFunctio ...

哇,太激动了,感谢赵老师百忙之中抽空回复。小弟是VBA白痴一个,看了老师帮忙添加的代码,猜测意思是若表头字段多了就增宽窗体显示(图1)。
或许是我的意思没有表达清楚,碍于不会Excel VBA,只能自己动手用笔画一个示意图(图2),即当字段多的时候,原窗体无需自动变宽,直接在有滚动条控制的Frame1中显示即可,通过滚动条拖动,即可一览全部的字段。

不知道如何来实现呢?谢谢赵老师指点
另附我是用的工作簿,您操作及可看到如图1的显示

图1:现在的窗体布局

图1:现在的窗体布局

图2:拟实现的窗体布局

图2:拟实现的窗体布局

Help.rar

517.43 KB, 下载次数: 17

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-17 18:13 | 显示全部楼层
paul1115 发表于 2019-3-17 14:00
哇,太激动了,感谢赵老师百忙之中抽空回复。小弟是VBA白痴一个,看了老师帮忙添加的代码,猜测意思是若 ...

动态添加控件,滚动条不好实现,下面程序根据字段数自动调整高度,以多行显示:
Private Sub UserForm_Activate()
    Dim l%, m%, n%, i%, h%
    CheckBox100.Value = True
    l = WorksheetFunction.RoundUp(d.Count / 2, 0)
    If d.Count > 20 Then '新加
        h = WorksheetFunction.RoundUp(d.Count / 10, 0)
        l = WorksheetFunction.RoundUp(d.Count / h, 0)
        Me.Height = Me.Height + (h - 2) * 30
        Frame1.Top = Frame1.Top + (h - 2) * 30
        ListView1.Height = ListView1.Height + (h - 2) * 30
    End If
    For i = 0 To d.Count - 1 '逐个字段添加动态复选框
        m = i Mod l '求余数,决定控件的横坐标
        n = Int(i / l) * 24 '控件的纵坐标增量
        With Controls.Add("Forms.CheckBox.1", "CheckBox" & i + 2, True) '添加动态复选框
            .Move 250 + 60 * (m + 1), 1 + n '前面是X(距左边的距离),后面是Y(距上边的距离)
            .Caption = d.Keys(i) '显示字段名
            .Width = 60 '宽度
            .Height = 30
        End With
    Next
    If dic.Count = 1 Then '全部工作表列数相同
        CheckBox1.Value = True
    Else '列数不同
        CheckBox1.Enabled = False '“*”复选框无效
        CheckBox101.Value = True '全部字段
    End If
    If flag Then CheckBox102.Enabled = False
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-17 18:22 | 显示全部楼层
请看效果图和附件:

无标题.jpg

Help.rar (518.45 KB, 下载次数: 29)

TA的精华主题

TA的得分主题

发表于 2019-3-17 19:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
让字段根据数量动态显示,一样解决问题,殊途同归!多谢赵老师出手相助:)
您出品的这个神奇的工具真的在日常工作中帮了我们大忙呢,为您这种真正的互联网分享精神点赞,感谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-20 21:16 , Processed in 0.045310 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表