Public Sub AutoSetRowHeight(ByVal sht As Worksheet, Optional RowsInOnePage As Long)
Dim BreakRow As Range '水平分页符位置
Dim SumHeight As Double '累计首页行高
Dim AverageHeight As Double
Dim RestHeight As Double
Dim i As Long '行号
With sht
'获取第一页与第二页分页符所在的单元格
Set BreakRow = sht.HPageBreaks(1).Location
Debug.Print "首页分页符所在的行号:"; BreakRow.Row
'累计第一页所有行的高度
i = 1
Do While i < BreakRow.Row SumHeight = SumHeight + .Rows(i).RowHeight
i = i + 1
Loop
Debug.Print "计算行号尾号 "; i - 1
'获取第一页最后一个成绩单末尾的空白行行号
If IsMissing(RowsInOnePage) Then
RowsInOnePage = BreakRow.Row
Do While .Cells(RowsInOnePage, 2).Value <> ""
RowsInOnePage = RowsInOnePage - 1
Loop
Debug.Print "首页最后一个成绩单截止行号:"; RowsInOnePage
End If
'计算平均行高
Debug.Print "单页总行高 : "; SumHeight
If RowsInOnePage <> 0 Then
AverageHeight = SumHeight / RowsInOnePage
Else
MsgBox "除零错误"
'GoTo ErrHandler
Exit Sub
End If
'设置已用区域的行高
'AverageHeight = IIf(AverageHeight - Int(AverageHeight) > 0.5, Int(AverageHeight) + 1, Int(AverageHeight) + 0.5) '########################
'行高最小设置单位为0.25 改进方案,现将N-1行缩小一点,再将第N行放大一点
AverageHeight = Int(AverageHeight / 0.25) * 0.25 '截取0.25的倍数部分
RestHeight = SumHeight - AverageHeight * (RowsInOnePage - 1)
.UsedRange.Rows.RowHeight = AverageHeight EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
For i = 1 To EndRow
If i Mod RowsInOnePage = 0 Then .Rows(i).RowHeight = RestHeight
Next i '首页仍然后剩余 进入调整方案
Set BreakRow = sht.HPageBreaks(1).Location
FirstEnd = BreakRow.Row - 1 If FirstEnd > RowsInOnePage Then
Do While .Cells(FirstEnd, 1).Value <> ""
For i = FirstEnd To 1 Step -1
If .Cells(i, 1).Value = "" Then
lastBlank = i
Exit For
End If
Next i
NewHeight = .Rows(lastBlank).RowHeight + 0.25
.Rows(lastBlank).RowHeight = NewHeight
Set Rng = sht.HPageBreaks(1).Location
FirstEnd = Rng.Row - 1
Loop
EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
For i = 1 To EndRow
If i Mod RowsInOnePage = 0 Then .Rows(i).RowHeight = NewHeight
Next i
End If End With
'释放
Set sht = Nothing
Set BreakRow = Nothing
End Sub

  

20190316xlVba_设置行高的改进方案的更多相关文章

  1. 实现Myxls设置行高的功能(转)

    MyXLS是一个导出Excel的好工具,速度快,体积小,而且也不用担心使用Com生成Excel时资源释放的问题了.但是作者提供的代码没有设置行高 要实现这个效果,首先需要修改两个文件: 1.Row.c ...

  2. DataGridView设置行高

    .Net中DataGridView控件如何设置行高 在DataGridView控件中,默认的行高很大,而标题头的行高却很小,感觉很不匀称. 标题头的行高比较好设置需要修改两个属性1修改ColumnHe ...

  3. 闲记 单元格与单元格之间的边 ///字体属性都是font开头,除了颜色属性 ///文本属性都是text开的,除了设置行高。

    这两天一直在做网页没有什么太大的问题,期间也考了一场试,对答案的时候老师讲了一些小知识,因此来记录一下. 单元格与单元格之间的边距(cellspaling) list-type-image可以使用图像 ...

  4. angularjs ui-grid如何动态设置行高

    自己开发的公众号,可以领取淘宝内部优惠券 在用ui-grid的时候我们可以用rowHeight设置行高,可是每一行的高度都是一样的,无法根据行内的内容进行自适应.如下图 为了解决这个问题,google ...

  5. 给GridView设置行高

    近期在工作中遇到了这样一个问题,使用一个GridView展示数据,item中仅仅是一个TextView,可是里面显示的文字多少不固定多少,必须所有展示出来. 遇到的问题: 1.把item中的宽和高设置 ...

  6. 一个电商项目的Web服务化改造3:改进方案の规范和约定、单表、单一职责

         最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA.      有点挑战,做完了,会有很大进步. 上一篇,我们描述了原有项目中的问题.  或者说是,本篇的基本 ...

  7. 如何给HTML页面设置行高

    设置行高 由于简单还是老样子直接上代码了哦,注意:line-height属性值可以使用固定值如:20px..和百分比如:20%. 如果想让文字垂直居中如下:行高的主要作用是用来设置文本的垂直方向居中对 ...

  8. Nopi 导出设置行高

    1.导出excel行显示不完整数据客户不满意,需要我们处理 ; rowNum <= sheet.LastRowNum; rowNum++) { HSSFRow currentRow = shee ...

  9. MySQL数据库分布式事务XA优缺点与改进方案

    1 MySQL 外部XA分析 1.1 作用分析 MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:ameoba[4],网易的DDB,淘宝的 ...

随机推荐

  1. iOS 线程安全--锁

    一,前言 线程安全是iOS开发中避免了的话题,随着多线程的使用,对于资源的竞争以及数据的操作都可能存在风险,所以有必要在操作时保证线程安全. 二,为什么要使用锁? 由于一个进程中不可避免的存在多线程, ...

  2. [ovs] openvswitch 从源码编译安装

    文档:https://docs.openvswitch.org/en/latest/intro/install/general/ 1. yum install autoconf automake li ...

  3. 【转】前端框架天下三分:Angular React 和 Vue的比较

    前端框架天下三分:Angular React 和 Vue的比较 原文链接:http://blog.csdn.net/haoshidai/article/details/52346865 前端这几年的技 ...

  4. ADG日志传输方式参数log_archive_dest_n详解

    主库的日志发送是由log_archive_dest_n参数设置(注意:同时还有一个和它相对应的开关参数log_archive_dest_state_n,用于指定该参数是否有效),下面简单介绍下该参数各 ...

  5. Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)

    1.搭建MySQL数据库 安装MariaDB yum install mariadb-server -y 启动MySQL服务 emctl start mariadb #启动服务 emtcl enabl ...

  6. JAVA spring 常用包作用详解(转)

    转载地址:https://www.cnblogs.com/Tmc-Blog/p/6093162.html <project xmlns="http://maven.apache.org ...

  7. __call__方法和Flask中 first_or_404

    1.__call__方法: 在一个类的实例中,函数一般都是可调用的对象: __call__方法时魔法方法,该方法允许程序员创建可调用的对象(实例),默认情况下是不会触发,也就是说,大多数实例是不可被调 ...

  8. React之ant design的table表格序号连续自增

    render(text,record,index){     return(       <span>{(pagination.current-1)*10+index+1}</spa ...

  9. go语言的安装与开发环境

    安装golang编译器: https://studygolang.com/dl 之后设置环境变量GOPATH(项目目录)  GOROOT(默认已经设置好) 安装编辑器:IDEA安装和破解 https: ...

  10. 第一章 JQuery概述

    1.JQuery的作用:访问和操作DOM元素控制页面样式对页面事件进行处理扩展新的JQuery插件与Ajax技术完美结合注:JQuery能完成的效果js都能完成,但是JQuery的开发效率更高,代码更 ...