20190316xlVba_设置行高的改进方案
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_设置行高的改进方案的更多相关文章
- 实现Myxls设置行高的功能(转)
MyXLS是一个导出Excel的好工具,速度快,体积小,而且也不用担心使用Com生成Excel时资源释放的问题了.但是作者提供的代码没有设置行高 要实现这个效果,首先需要修改两个文件: 1.Row.c ...
- DataGridView设置行高
.Net中DataGridView控件如何设置行高 在DataGridView控件中,默认的行高很大,而标题头的行高却很小,感觉很不匀称. 标题头的行高比较好设置需要修改两个属性1修改ColumnHe ...
- 闲记 单元格与单元格之间的边 ///字体属性都是font开头,除了颜色属性 ///文本属性都是text开的,除了设置行高。
这两天一直在做网页没有什么太大的问题,期间也考了一场试,对答案的时候老师讲了一些小知识,因此来记录一下. 单元格与单元格之间的边距(cellspaling) list-type-image可以使用图像 ...
- angularjs ui-grid如何动态设置行高
自己开发的公众号,可以领取淘宝内部优惠券 在用ui-grid的时候我们可以用rowHeight设置行高,可是每一行的高度都是一样的,无法根据行内的内容进行自适应.如下图 为了解决这个问题,google ...
- 给GridView设置行高
近期在工作中遇到了这样一个问题,使用一个GridView展示数据,item中仅仅是一个TextView,可是里面显示的文字多少不固定多少,必须所有展示出来. 遇到的问题: 1.把item中的宽和高设置 ...
- 一个电商项目的Web服务化改造3:改进方案の规范和约定、单表、单一职责
最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA. 有点挑战,做完了,会有很大进步. 上一篇,我们描述了原有项目中的问题. 或者说是,本篇的基本 ...
- 如何给HTML页面设置行高
设置行高 由于简单还是老样子直接上代码了哦,注意:line-height属性值可以使用固定值如:20px..和百分比如:20%. 如果想让文字垂直居中如下:行高的主要作用是用来设置文本的垂直方向居中对 ...
- Nopi 导出设置行高
1.导出excel行显示不完整数据客户不满意,需要我们处理 ; rowNum <= sheet.LastRowNum; rowNum++) { HSSFRow currentRow = shee ...
- MySQL数据库分布式事务XA优缺点与改进方案
1 MySQL 外部XA分析 1.1 作用分析 MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:ameoba[4],网易的DDB,淘宝的 ...
随机推荐
- [No0000C6]Visual Studio 2017 函数头显示引用个数
Visual Studio 2017 函数头显示引用个数
- http 你造吗?
HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...
- ARGB与RGB、RGBA的区别
ARGB 是一种色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常见于32位位图的存储结构. RGB 色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变 ...
- 【托业】【新东方托业全真模拟】TEST05~06-----P5~6
credit A with B 把A归功于B present A with B 给A赠送B proofread thoroughly 彻底地校对:exclusively 专门地:独占地:apparen ...
- FastDFS的单点部署
1 安装libfastcommon 注意:在Centos7下和在Ubuntu下安装FastDFS是不同的,在Ubuntu上安装FastDFS需要安装libevent,而外Centos上安装FastD ...
- Python学习之高级数组(一)
1.Python基础学习之高级数组(一) 1.1视图:就是与较大数组共享相同数据的较小数组.Numpy包提供数据视图的概念是为了精确地控制内存的使用方式. 数组视图.切片视图.转置和重塑视图等 数组 ...
- 7.mongo python 库 pymongo的安装
1.Python 中如果想要和 MongoDB 进行交互就需要借助于 PyMongo 库,在CMD中使用命令即可[注意此处是pip3,pip无法安装]: pip3 install pymongo 2. ...
- j2ee高级开发技术课程第六周
一.jsf(java server faces)的运行原理(工作方式) 1.jsf应用是事件驱动的,当一个事件发生时(比如用户单击一个按钮),事件通知通过HTTP发往服务器,服务器端使用叫做Faces ...
- oracel数据库主键自增
-- Create sequence create sequence FILE_ID_SEQ 主键名(自增列) minvalue 1 起始 maxvalue 99999 最 ...
- 服务器日志文件Web远程查看
公司买的一款企业应用软件,所有透过应用操作DB的操作都会生成有日志,日志是以文本文件的形式存放在服务器上,后缀名为*.log.1,*.log.2之类的,软件本身也提供功能查询这些日志,但这个查询的功能 ...