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,淘宝的 ...
随机推荐
- 表驱动方法(Table-Driven Methods)
表驱动方法(Table-Driven Methods) - winner_0715 - 博客园 https://www.cnblogs.com/winner-0715/p/9382048.html W ...
- makefile编写规则
cc = g++ -std=c++11 prom = calc deps = FtTest.h obj = FtTest.o newft.o LIBS = -lgtest_c11 $(prom): $ ...
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处(转)
1.声明 本篇转自博客:http://blog.csdn.net/reille/ 2.转载内容 2.1.前言 今天在阅读 Qt Creator 的源代码时,发现一些注释中有 FIXME 英文单词,用英 ...
- jenkins配置工程目录-启动case
1.我们在python里面编辑的脚本可以正常跑,但是在cmd里面跑就不行了,找不到自己定义的方法模块,这个时候我们要搞个环境变量 name : PYTHONPATH val : 工程目录路劲 ...
- COM中参数标识
- git help 机器翻译
该篇发布仅为博主个人保存并参考,内容可能不对 usage: git [--version] [--help] [-C <path>] [-c <name>=<value& ...
- 使用addeventlistener为js动态创建的元素添加事件监听
点击li弹出内容,并且动态添加li之后有效 <button onclick="addFunction()">点我增加</button> <ul> ...
- Ajax跨域请求COOKIE无法带上的解决办法
原生ajax请求方式: var xhr = new XMLHttpRequest(); xhr.open("POST", "http://xxxx.com/demo/b/ ...
- 论文笔记【二】Making Sense of Word Embeddings
摘要 1.作者提出了一种新的简单有效的方法,用于学习词义嵌入word sense embedding 2.传统的两种方法:(1)直接从语料库中学习词义:(2)依赖词汇资源的语义库 研究方法的创新点:通 ...
- ansible的高级应用-roles
在之前我们知道了playbook,类似于shell的脚本,playbook适用于一些不太麻烦的部署任务,比如说使用playbook安装mysql,那么我们直接写一个playbook文件即可.可是如果我 ...