Sub TestAutoAdjustColumnWidthBaseOnModel()Set ModelSheet = ThisWorkbook.Worksheets("单据模板")Set PrintSheet = ThisWorkbook.Worksheets("批量打印")AutoAdjustColumnWidthBaseOnModel ModelSheet, PrintSheet
End Sub
Sub AutoAdjustColumnWidthBaseOnModel(ByVal ModelSheet As Worksheet, ByVal PrintSheet As Worksheet, Optional modelCountInOnePage As Variant)Dim ModelRng As Range '模板单元格Dim modelColumnWidth() As Double '模板列宽数据Dim modelColumnCount As Long '模板行数Dim sumModelColumnWidth As Double '模板累计列宽Dim adjustScale As Double '调整比例'Dim modelCountInOnePage As Long '一页打印几个单据模板Dim BreakColumn As Long '垂直分页符位置Dim FirstPageSumColumnWidth As Double '累计首页列宽Dim ColumnsInOnePage  As Long  '每页打印多少行Dim i As Long, m As Long '行号With ModelSheetIf Application.WorksheetFunction.Count(.Cells) > 0 Then'计数防止计算行号发生错误EndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row + 1EndCol = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column'获取单据模板单元格区域Set ModelRng = .Range(.Cells(1, 1), .Cells(EndRow, EndCol))Debug.Print ModelRng.Address'获取模板单元格行数和累计列宽modelColumnCount = ModelRng.Columns.CountReDim modelColumnWidth(1 To modelColumnCount)sumModelColumnWidth = 0For i = 1 To modelColumnCountmodelColumnWidth(i) = ModelRng.Columns(i).ColumnWidthsumModelColumnWidth = sumModelColumnWidth + ModelRng.Columns(i).ColumnWidthNext iDebug.Print sumModelColumnWidth'记录列宽End IfEnd With'With PrintSheetDebug.Print "垂直分页符个数:"; .VPageBreaks.Count'先判断是否有垂直分页符,如果没有则退出If .VPageBreaks.Count > 0 Then'获取第一页与第二页分页符所在的单元格BreakColumn = .VPageBreaks(1).Location.ColumnDebug.Print "首页分页符所在的行号:"; BreakColumn'累计第一页所有行的高度i = 1Do While i < BreakColumnFirstPageSumColumnWidth = FirstPageSumColumnWidth + .Columns(i).ColumnWidthi = i + 1Loop'StopDebug.Print FirstPageSumColumnWidth'获取第一页最后一个成绩单末尾的空白行行号If IsMissing(modelCountInOnePage) ThenColumnsInOnePage = BreakColumnDo While Application.WorksheetFunction.Count(.Columns(ColumnsInOnePage)) > 0ColumnsInOnePage = ColumnsInOnePage - 1LoopDebug.Print "首页最后一个成绩单截止行号1:"; ColumnsInOnePageColumnsInOnePage = Application.WorksheetFunction.Max(BreakColumn, modelColumnCount)Debug.Print "首页最后一个成绩单截止行号2:"; ColumnsInOnePagemodelCountInOnePage = ColumnsInOnePage / modelColumnCountDebug.Print "每一页放置多少个单据:"; modelCountInOnePageEnd If'计算调整比例adjustScale = FirstPageSumColumnWidth / (sumModelColumnWidth * modelCountInOnePage)Debug.Print adjustScale'调整EndCol = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Columnm = 0For i = 1 To EndColm = m + 1.Columns(i).ColumnWidth = modelColumnWidth(m) * adjustScaleIf m = modelColumnCount Then m = 0 '逐个单据调整Next iEnd IfEnd WithEnd Sub

  

转载于:https://www.cnblogs.com/nextseven/p/8970698.html

20180429 xlVBA套打单据自适应列宽相关推荐

  1. elementui表格宽度适应内容_elementui表格中的列怎么实现自适应列宽

    elementui表格中的列怎么实现自适应列宽 发布时间:2020-12-28 14:58:04 来源:亿速云 阅读:53 作者:Leah 这期内容当中小编将会给大家带来有关elementui表格中的 ...

  2. elementui表格宽度适应内容_解决elementui表格操作列自适应列宽代码示例

    本篇文章小编给大家分享一下解决elementui表格操作列自适应列宽代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 写死宽度时是这样的: 开始 ...

  3. android listview 自适应列宽_Android 开发技术周报 Issue#272

    新闻/News 谷歌Pixel 4a将采用UFS 2.1存储:可以体验全套GMS [图]Android端Play商城现全面开放深色主题 教程/Tutorial OkHttp Interceptor - ...

  4. 设置DBGridEH自适应列宽的最好方法

    设置DBGridEH自适应列宽的最好方法 一直在找最好的根据DBGridEH(或者DBGrid)的内容和标题栏设置自适应列宽的方法,一直没有太好的.今天从园地上发现了源码:地址如下,非常好用.与大家分 ...

  5. EasyExcel自适应列宽(官方文档的不好用,个人修改了下)

    直接粘贴了用就行,调了半天 package com.wpg.common.handler;import com.alibaba.excel.enums.CellDataTypeEnum; import ...

  6. java通过poi生成excel表格(自适应列宽、合并单元格后的边框添加)

    具体java通过POI读写Excel的基本使用方法可参考: POI读写Excel的基本使用 1.项目导入依赖: <!--xls--> <dependency><group ...

  7. easyExcel 导出文件时,设置单元格样式,自适应列宽

    目录 1.自适应列宽实现类 2.单元格样式实现类 3.导出的时候,特殊数据类型,需要设置转换类,不然注解导出方式会报错 注解使用方式 日期转换类 4.web导出excel(将excel数据写入到res ...

  8. hutool导出导出excel中文自适应列宽

    问题:在使用hutool工具类ExcelWriter导出excel表格时,设置了自适应列宽格式,只有数字和字母生效,中文自适应列宽不生效,列宽只有差不多一半. 解决方法(同样适用于LINUX): Ex ...

  9. easyexcle 设置列宽_easyexcel自适应列宽

    在导出时注册registerWriteHandler(new CustomCellWriteHandler()) /** * @author jamin * @date 2020/7/29 11:28 ...

最新文章

  1. Matlab实现图像边缘检测
  2. fflush函数的深入理解
  3. Bossy智能便贴:让工作更有效率
  4. java把一个list_java中将一个List等分成n个list的工具方法(推荐)
  5. 笔记-信息化与系统集成技术-区块链的技术架构
  6. Leaflet中使用leaflet-sidebar插件实现侧边栏效果
  7. 运用Zabbix实现内网服务器状态及局域网状况监控(2) —— 环境配置
  8. python while true_Python天坑系列(一):while 1比while True更快?
  9. linux 脚本批量删除,Linux Shell使用Bash脚本批量删除文件
  10. linux配置apache2
  11. BroadcastReceiver广播接受者简单使用
  12. 关键词词云怎么做_网友问:做独立站,怎么做关键词排名,怎么做客户流量?...
  13. python3下载m3u8转mp4_Python3爬虫通过m3u8文件下载ts视频 Python爬虫
  14. 【C语言】流程图符号及流程图
  15. ImageJ实践——测量大小/长短(以细胞为例)
  16. 专升本——动词的时态和语态
  17. 【设计模式】详解设计模式七大原则
  18. ISA, x86,x86_64, AMD64, 指令集等名词解析
  19. EGE绘图之三 动画
  20. 14、DHCP(自动分配IP地址)

热门文章

  1. CSS 选择器 :last-child与:last-of-type的区别
  2. 自定义PopupWindow弹出后背景灰色状态
  3. vim语法高亮的错误解决办法
  4. 第2章 fping、hping应用
  5. Java入力项目无法设定到form_html中关于form与表单提交操作的资料集合
  6. pipreqs生成python项目依赖清单
  7. ubuntu下使用apt安装mysql_Ubuntu下通过apt包管理安装mysql
  8. 一次.net托管内存泄露分析
  9. 天池读书会六月场来啦,零基础也能听的懂的编程分享!
  10. 60秒完成病毒基因对比 阿里云向社会免费开放基因计算服务