ad

excel图表使用VBA创建进度条-英雄云拓展知识分享

匿名投稿 6439 2024-06-08

当你的程序履行时间较长时,使用一个进度条来展现程序履行的状态是非常必要的。

进度条设计

excel图表使用VBA创建进度条-英雄云拓展知识分享

打开VBE,插入一个用户窗体。

1.在属性窗口中,将该用户窗体命名为urfProgress。

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

3.调剂该用户窗体为适合的大小(高110*宽240)。

进行适当设置后,至今为止表示进度条的用户窗体以下图1所示。

图1

在用户窗体中插入一个标签控件,用于显示唆使程序状态的文本。在属性窗口将其命名为lblCaption,调剂该标签的大小以便有足够的空间来容纳将要显示的文本,这里设置其Width属性为174,设置其Caption属性为空(即没有文本)。此时,表示进度条的用户窗体以下图2所示。

图2

接下来,在用户窗体中插入一个框架控件。使该框架在水平和垂直方向上大致居于用户窗体中心,并位于前面添加的标签下方,以下图3所示。

图3

设置框架的属性。将其命名为fraProgress,设置其Caption属性为空(即没有文本),修改其SpecialEffect属性为“2-fmSpecialEffectSunken”。此时,表示进度条的用户窗体以下图4所示。

图4

随后,再插入一个标签。该标签中不会显示任何文本,但是随着程序的运行,该标签长度会不断增加来填充刚刚创建的框架。

1.插入一个标签并放置在刚创建的框架里面,调剂尺寸使其与框架重合,以下图5所示。

图5

2.将该标签命名为lblProgress。

3.修改其Caption属性为空(即没有文本)。

4.修改其BackColor属性为你想要的色彩。

5.修改其SpecialEffect属性为“1-fmSpecialEffectRaised”。

此时,表示进度条的用户窗体以下图6所示。

图6

编写程序

隐藏标题栏

在VBE中插入一个标准模块,输入下面使用Windows API的代码来隐藏用户窗体的标题栏:

Public Const GWL_STYLE = ⑴6

Public Const WS_CAPTION = &HC00000

#If VBA7 Then

Public Declare PtrSafe Function GetWindowLong _

Lib “user32” Alias “GetWindowLongA” ( _

ByVal hWnd As Long,_

ByVal nIndex As Long) As Long

Public Declare PtrSafe Function SetWindowLong _

Lib “user32” Alias “SetWindowLongA” ( _

ByVal hWnd As Long,_

ByVal nIndex As Long, _

ByVal dwNewLong As Long) As Long

Public Declare PtrSafe Function DrawMenuBar_

Lib “user32” ( _

ByVal hWnd As Long) As Long

Public Declare PtrSafe Function FindWindowA_

Lib “user32” (ByVallpClassName As String, _

ByVal lpWindowName As String) As Long

#Else

Public Declare Function GetWindowLong _

Lib “user32” Alias “GetWindowLongA” ( _

ByVal hWnd As Long, _

ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong _

Lib “user32” Alias “SetWindowLongA” ( _

ByVal hWnd As Long,_

ByVal nIndex As Long, _

ByVal dwNewLong As Long) As Long

Public Declare Function DrawMenuBar _

Lib”user32″ ( _

ByVal hWnd As Long) As Long

Public Declare Function FindWindowA _

Lib”user32″ (ByVal lpClassName As String, _

ByVal lpWindowName As String) As Long

#End If

Sub HideTitleBar(frm As Object)

Dim lngWindow As Long

Dim lFrmHdl As Long

lFrmHdl = FindWindowA(vbNullString,frm.Caption)

lngWindow = GetWindowLong(lFrmHdl,GWL_STYLE)

lngWindow = lngWindow And (Not WS_CAPTION)

Call SetWindowLong(lFrmHdl, GWL_STYLE,lngWindow)

Call DrawMenuBar(lFrmHdl)

End Sub

用户窗体初始化

在用户窗体urfProgress中,添加Initialize事件代码:

Private Sub UserForm_Initialize()

Me.Height = Me.Height – 10

HideTitleBar.HideTitleBar Me

End Sub

显示进度条

本文的示例以遍历工作表所有已使用的行来更新进度条:

Sub DemoProgress()

Dim i As Long

Dim lngLastRow As Long

Dim pct As Single

lngLastRow = Range(“A” &Rows.Count).End(xlUp).Row

‘进度条宽度从0开始

urfProgress.lblProgress.Width = 0

urfProgress.Show

For i = 1 To lngLastRow

pct = i / lngLastRow

‘计算进度条百分比并增加相应宽度

With urfProgress

.lblCaption.Caption = “正在处理” & lngLastRow &”行中的第” & i & “行.”

.lblProgress.Width = pct *(.fraProgress.Width)

End With

DoEvents

‘可以在这里插入真正要履行操作的程序

‘如果进度完成则卸载用户窗体

If i = lngLastRow Then Unload urfProgress

Next i

End Sub

运行程序后的效果以下图7所示。

图7

上面的示例是在程序中恰好也有循环时,在履行循环进程的同时显示进度条。但是,如果没有循环呢?也能够摹拟程序履行进度:

Sub DemoProgress2()

‘开始显示进度条

urfProgress.lblProgress.Width = 0

urfProgress.Show

‘摹拟完成进度

DoPrecent (0)

‘放置程序代码

‘摹拟完成进度

DoPrecent (0.25)

‘放置程序代码

‘摹拟完成进度

DoPrecent (0.5)

‘放置程序代码

‘摹拟完成进度

DoPrecent (0.75)

‘放置程序代码

‘摹拟完成进度

DoPrecent (1)

‘卸载窗体,即关闭进度条

Unload urfProgress

EndSub

Sub DoPrecent(pctdone As Single)

With urfProgress

.lblCaption.Caption = pctdone * 100& “% 完成”

.lblProgress.Width = pctdone *(.fraProgress.Width)

End With

DoEvents

End Sub

如果进程占用大量资源,可能会发现进度条不更新或显示为白色,此时可在End With前面添加代码:

urfProgress.Repaint

强迫VBA重新绘制进度条,这样在每次更改用户窗体时都会更新。



选择英雄云云表单=选择更智能的办公工具

>>>>🚀🌟 点击注册 免费试用 更高级的-英雄云企业级云表单 🌟🚀 😃👉🌐>>>>

在现代企业管理中,数据的高效管理和处理至关重要。随着信息技术的不断发展,英雄云云表单已经成为了提高数据录入、管理和分析效率的不可或缺的工具。让我们来深入探讨英雄云-云表单的几大优势。

基础字段:多样性满足业务需求

英雄云云表单中包括了各种基础字段,如单行文本多行文本数字输入框单选框复选框下拉框下拉复选框日期时间分割线等。这些字段的多样性使用户可以根据具体的业务需求,轻松进行文本、数据和时间信息的录入或修改。例如,您可以使用单行文本字段录入员工姓名、产品型号等,或者使用下拉框进行多选,根据不同情况选择更加方便的字段类型。

高级字段:提升工作效率

英雄云云表单还提供了高级字段,如地址图片附件手写签名手机子表关联数据关联查询以及流水号。这些高级字段在基础字段的基础上升级,可帮助用户完成一些琐碎的工作。例如,使用地址字段可以避免逐字打字,而流水号字段可以自动生成规律性的编号,非常适用于合同编号生成等场景。

部门成员字段:精确管理与通讯录的关联

英雄云的部门成员字段允许企业对各个部门的成员进行精确管理。用户可以通过部门成员字段获取通讯录中的部门成员信息,应用于记录报销人、报销部门等场景。这些成员字段还细分为成员单选成员多选,可根据具体需求在通讯录中选择一个或多个成员。

聚合表:数据处理更智能

英雄云聚合表功能用于对已存在的表单数据进行聚合计算,从而得到一张聚合表,后续其他表单可调用聚合表进行数据联动、关联查询和关联数据等操作完成数据处理。这一功能可应用于多种场景,如进销存管理、财务管理和门店零售管理等,帮助企业完成数据处理,提高工作效率。

表单权限设置:灵活管理数据访问

英雄云的表单权限设置允许用户根据企业的具体需求管理表单的访问和操作权限。用户可以根据系统权限或自定义权限对不同成员或团队进行权限设置,以确保数据的安全和合规性。这一功能使企业能够根据变化的业务需求和团队结构,实时调整权限设置。

自定义打印模板:文档输出更便捷

英雄云云表单支持自定义打印模板,可将表单数据转换为可打印的Word文档。用户可以根据自己的需求进行排版和编辑,将产品规格说明书等文档轻松生成。这一功能提供了一种标准化的文档输出方式,简化了信息整理的过程。

综合来看,选择英雄云云表单意味着选择更智能、更灵活、更高效的数据管理工具。无论是提高工作效率,精确管理数据,还是实现数据处理,英雄云云表单都能满足您的多样化需求,助力您的业务发展。

如果您正在寻找一款强大的云表单工具,不妨考虑英雄云,它将为您带来更多的便捷和智能,助您事半功倍。


免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿等来源。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

上一篇:如何一键删除Excel表格中的所有图片?一键删除Excel表格中的所有图片的方法-英雄云拓展知识分享
下一篇:EXCEL表格怎样制作实用的电子账册?-英雄云拓展知识分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×