【Excel VBA 编程】表格内自动生成进度条

目录

引言

数字百分比实现

图形化的进度条实现

代码入口设计

代码实现

增加进度条代码实现

删除进度条代码实现

运行结果

回顾总结


引言

下图所示的表格中增加“进度”一列,要求根据目标和已完成数据自动计算完成进度,按照百分比显示在D列。另外,D列中还要增加进度条,直观显示完成情况,进度条需要自适应单元格的宽度:100%完成则进度条充满整个单元格,完成50%则填充单元格的一半,其他进度则按照此比例换算。对于进度条的颜色也有要求:

  • 小于50%,进度条是红色的
  • 大于等于50%,小于60%进度条是橙色的
  • 大于60%进度条是绿色的

问题的分析与设计

 要求还是很多的而且很琐碎,不慌,咱们把这些需求拆分出来,逐条来分析并理清思路

数字百分比实现

如果是用数字百分比的形式显示进度,这个功能很好实现,只需要将C列数据除以B列数据,得出的结果再乘以100,最后面加上百分号就行了。我们正常手工计算的话也是这个流程,那么如何转换成编程语言表达出来呢?

VBA中乘号用*表示,除号用/表示,使用除号时需要注意精度问题,如果不进行特殊的处理,会显示一堆小数位,如下图

实际我们并不需要如此高精度的数据,可以使用 Round函数指定小数位数。在VBA中Round 函数用于将数值四舍五入到指定的小数位数,尤其是在处理财务数据或需要精确控制数字格式的情况下这个函数非常有用, Round 函数的语法:Round(number, numdigits)

  • number:必需参数。要进行四舍五入的数值。可以是任何有效的数值表达式。
  • numdigits:必需参数。表示要将数值四舍五入到的小数位数。如果为正值,则表示小数点后的位数;如果为零,则表示四舍五入到最接近的整数;如果为负值,则表示小数点前的位数(即对十位、百位等进行四舍五入)。

例如Round(231 / 297 ,2) ,执行后返回0.78

图形化的进度条实现

进度条利用Shapes实现的,实现步骤如下&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wei1019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值