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. mixpanel umeng talkingdata

    市面上可以比较容易的接触到的实时大数据用户行为分析系统有很多,比如国外有著名的Mixpanel.Localytics.Google,国内有TalkingData.这些公司都提供基于云的大数据分析系统, ...

  2. 006-mac下finder操作

    1. 在 Finder 窗口显示更多信息 打开任意 Finder 窗口.前往并打开「显示」-「显示路径栏」.「显示」-「显示状态栏」和「显示」-「显示预览」三项. 选择了显示路径栏 路径栏通常是从磁盘 ...

  3. 使用JavaScript实现在页面上所有内容加载完之前一直显示loading...页面

    Html <body class="is-loading"> <div class="curtain"> <div class=& ...

  4. 两个有序数组的上中位数和第K小数问题

    哈,再介绍个操蛋的问题.当然,网上有很多解答,但是能让你完全看懂的不多,即便它的结果是正确的,可是解释上也是有问题的. 所以,为了以示正听,我也做了分析和demo,只要你愿意学习,你就一定能学会,并且 ...

  5. windows程序设计 显示一个窗口

    #include <windows.h> HINSTANCE hinst; LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM) ...

  6. day07 Python文件操作

    一,文件操作基本流程 #1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r #2. 通过句柄对文件进行操作 d ...

  7. Jmeter对jar包的调用赋值

    一.前言 在我们测试接口的过程中,可能有时需要用到第三方jar包来生成一些测试数据(如有时需要对参数的输入值使用第三方jar包进行加密操作),涉及到这种的情况,普遍做法是:手动调用jar包获得需要的值 ...

  8. mybatis源码解析12---ResultSetHandler解析

    说完了StatementHandler和ParameterHandler,接下来就需要对查询的结果进行处理了,而对于sql结果的处理是由ResultSetHandler处理的,ResultHandle ...

  9. Porsche Piwis Tester II V12.100 Version Released

    Piwis Tester II v12.100 Version released today! In this new version we can find the latest type Pors ...

  10. Linux 其它知识点

    1:import sys  ----导入路径     sys.path.append("/hom") ----添加一个hom的路径 2:重新导入模块 from imp import ...