专栏首页完美ExcelVBA实战技巧30:创建自定义的进度条2

VBA实战技巧30:创建自定义的进度条2

有创意的进度条

采用相反的方式来显示进度,将使用标签“缩小”而不是“增长”。诀窍是我们的标签不是进度的指示器。相反,有一个指示进度的静态图像,而标签将充当静态图形隐藏部分的遮罩,如下图5所示。

图5

通过将标签着色为与背景相同的颜色并将标签的位置放置在图像之上,可以在减小标签的大小时显示图像的一部分。当我们“缩小”标签时,它会给我们一种“增长”图像的错觉,如下图6所示。

图6

大多数情况下,本示例的代码与上一示例是相同的,主要区别在于滚动条/遮罩和百分比显示。

百分比显示

添加一个文本框对象(如下图7所示)并更改其标题(Caption)属性,而不是插入框架对象并更改标题属性。

图7

其灰色背景是一个插入的Image对象,它指向一个带有灰色边框的简单图像。

进度条(静态图像)

绿色的“Excel”进度条是一个绿色矩形的静态图像,带有重复四次的Excel图标,如下图8所示。

图8

进度条(“缩小”遮罩)

与第一个示例相比,“缩小”的标签对象在操作上有两个主要区别。

  • Width属性的计算方法是将Pct乘以218(最大宽度)并从218中减少。例如,如果Pct为0.5,则宽度为109,原218的一半。
  • 将计算标签的左侧而不是将Left属性固定到设置位置。逻辑是从230(标签的最右侧)中减去计算出的Width。例如,如果Pct为0.5,则计算出的Width为 109,则Left属性计算结果为121。

注意:这些结果代表像素数。109代表像素宽度,121表示距用户窗体左边缘121个像素。根据用户窗体大小,可能需要试验这些值,可能需要进行一些实验才能获得完美的外观。

完整的代码如下:

1.标准模块中的代码

Sub GetMyForm_v2()

Load UserForm_v2

With UserForm_v2

.StartUpPosition = 0

.Left= Application.Left + (0.5 * Application.Width) - (0.5 * .Width)

.Top= Application.Top + (0.5 * Application.Height) - (0.5 * .Height)

.Show

End With

End Sub

2.用户窗体模块中的代码

Private Sub UserForm_Activate()

Dim startrow As Integer

Dim endrow As Integer

Dim i As Integer

Dim myScrollTest As Object

Set mainbook = ThisWorkbook

Application.ScreenUpdating = False

Application.DisplayAlerts = False

Set myScrollTest = Worksheets("ScrollTest_v2")

mylabel =Worksheets("ScrollTest_v2").Range("A2").Value

With myScrollTest

'开始位置

startrow = .Range("A1").Row + 1

'结束位置

endrow = .Range("A1").End(xlDown).Row

If .Range("A2").Value = "" Then

MsgBox "请从第2行开始粘贴你的实体代码."

Exit Sub

EndIf

End With

'开始循环

For i =startrow To endrow

Pct =(i - startrow + 1) / (endrow - startrow + 1)

Call UpdateProgress(Pct)

'这是工作簿执行许多需要一些时间的事情的地方

startTime = Timer ' 捕获当前时间

Do

Loop Until Timer - startTime >= 0.1 '1/10 秒后前进

'这是工作簿完成重复工作的地方

Next i

Unload UserForm_v2

myScrollTest.Select

MsgBox"生成报告已结束."& vbLf & vbLf & "请从打印机获取你的报告",vbInformation

Application.ScreenUpdating = True

Application.DisplayAlerts = True

End Sub

Sub UpdateProgress(Pct)

With UserForm_v2

.Complete.Caption = Format(Pct, "0%") '以数字形式显示给用户的百分比

.LabelProgress.Width = 218 - Pct * 218 ' 缩短遮罩

.LabelProgress.Left = 218 - .LabelProgress.Width + 12 '重新定位遮罩

.Repaint

End With

DoEvents

End Sub

注:本文学习整理自www.xelplus.com,供有兴趣的朋友参考。

本文分享自微信公众号 - 完美Excel(excelperfect),作者:fanjy

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • VBA实战技巧30:创建自定义的进度条1

    使用VBA宏,可以自动执行重复、单调且有时非常无聊的任务。在某些情况下,这有可能将数小时的工作减少到几分钟或几秒钟。

    fanjy
  • Excel实战技巧58: 使用VBA创建进度条

    2.设置其ShowModal属性为False,这样在该用户窗体处于打开状态时仍能继续运行程序。

    fanjy
  • VBA还能活多久?——完美Excel第169周小结

    VBA还会存在多久?VBA会消失吗?我现在学VBA还来不来得及?什么语言会取代VBA?……这些都是老生常谈的话题,多少年前就有不少人在争论。然而,时至今日,VB...

    fanjy
  • Excel实战技巧85:从下拉列表中选择并显示相关的图片

    在《Excel实战技巧15:在工作表中查找图片》中,我们使用名称和INDEX/MATCH函数组合,在工作表中显示与所选择名称相对应的图片。在《Excel实战技巧...

    fanjy
  • 006 C# 自动生成信息卡

    首先,我会在Word里建立一张信息卡模板,放在文件夹~c003\bin\Debug\。

    职场编码
  • 数据分析经典图书大全,专治各种不懂!

    一、数据分析-入门篇 1.1《谁说菜鸟不会数据分析》 ? 作者:张文霖, 刘夏璐, 狄松 简介:本书按照数据分析工作的完整流程来讲解。全书共8章,分别讲解数据分...

    CDA数据分析师
  • 简单的Excel VBA编程问题解答——完美Excel第183周小结

    下面是2020年11月12日发布的一些简单的ExcelVBA问题的答案,是不是和你想的一样。

    fanjy
  • 关于完美Excel微信公众号的定位

    昨天,在推送了一篇文章《VBA编程练习05.在工作表中实现七段显示》后,有一位朋友留言:“尽是一些又冷又偏的理论,对实际工作用处不大的技术。希望多提供一些接地气...

    fanjy
  • 在业务分析中实现商业洞察 – Excel商业智能分析报表的玩法

    一套完整的BI报表应该至少具备以下四个条件: 条件一:能够批量处理有一定规模的数据; 条件二:能够保证数据的时效性及准确性; 条件三:能够将实际业务中所涉及的所...

    机器学习AI算法工程
  • Excel商业智能分析报表「玩」法解析

    本文为CDA金牌讲师李奇原创,转载请在本平台申请授权 随着大数据时代的到来,企业管理者对数据价值的重视度越来越高,他们渴望从企业内外部数据中获得更多的信息财富,...

    CDA数据分析师
  • VBA实战技巧09: 一个仅对满足条件的可见行求平均值的自定义函数

    如果隐藏了某些行,AVERAGEIF函数仍会对所有行中满足条件的值求平均值,并不会受到隐藏行的影响,如下图2所示。

    fanjy
  • Excel实战技巧87:使用复选框控制是否显示相关图片

    本文介绍的技术稍有不同,这里使用复选框来控制相关的图片是否显示,当选取复选框时,显示图片,取消选择时,图片消失。

    fanjy
  • 这个用Power Query操作步骤太多了,还不如用VBA?

    在2017年9月份的时候,我曾经写过一篇叫做《PQ-综合实战:根据关键词匹配查找对应内容》的文章,主要是通过简单操作步骤的方式来实现关键词匹配查...

    大海Power
  • Excel 有哪些可能需要熟练掌握而很多人不会的技能?

    作者:何明科 链接:https://www.zhihu.com/question/21758700/answer/91385842 在咨询公司、VC/PE...

    机器学习AI算法工程
  • 迷你图工具汇总~

    自小魔方的公众号开通以来,陆陆续续、啰里啰嗦的分享了很多技巧,但是一直觉得很杂乱,缺乏体系,所以以后有必要定期对各系列分享内容进行阶段性总结。 最近一个系列一直...

    数据小磨坊
  • VBA实战技巧04: 一个用于两个列表区域比较的自定义函数

    本文整理自https://fastexcel.wordpress.com/,有兴趣的朋友可以研究一下。

    fanjy
  • 个人永久性免费-Excel催化剂功能第47波-VBA开发者喜爱的加密函数类

    原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,...

    Excel催化剂
  • Office 365开发概述及生态环境介绍(一)

    这是Office 365开发系列文章的第一篇,我会帮助大家回顾一下过去Office开发的一些场景,目前提供的一些能力,最后展望一下生态环境建设和未来的发展。

    盆盆
  • 震惊!当Python遇到Excel后,将开启你的认知虫洞

    本文主要讲Python与Excel的关系以及集成方案,Office家族的其他成员,如Word、PowerPoint与Excel拥有类似的功能,Python同样可...

    蒙娜丽宁

扫码关注云+社区

领取腾讯云代金券