使用VBA excel创建进度线

使用VBA excel创建进度线,excel,progress,vba,Excel,Progress,Vba,我尝试使用VBA Excel命令创建进度线 我有所有的数据来定义什么是进步 我不知道如何使用VBA创建进度线 例如,我尝试使用连接线,但似乎不起作用 ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 60, 405,800, 477).Select Range("Z20").Select ActiveSheet.Shapes.Range(Array("Straight Connector 11671")).Select 我不会对进度条使

我尝试使用VBA Excel命令创建进度线 我有所有的数据来定义什么是进步 我不知道如何使用VBA创建进度线

例如,我尝试使用连接线,但似乎不起作用

ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 60, 405,800, 477).Select
Range("Z20").Select
ActiveSheet.Shapes.Range(Array("Straight Connector 11671")).Select

我不会对进度条使用形状,而是在由代码更新单元格值的单元格上使用数据栏条件格式

在工作表的一个单元格上创建命名区域,例如ProgressBar

调整宽度以满足您的需要

将单元格格式化为百分比

选择条件格式->新规则->根据单元格的值设置所有单元格的格式

在“格式样式”下拉列表中,选择“数据栏”

选中“仅显示栏”复选框

在类型下拉列表中,选择数字作为最小值和最大值

在“值”文本框中,输入0表示最小值,输入1表示最大值

根据需要设置格式

在VB编辑器中,输入以下代码

Sub UpdateProgressBar()
    Dim Rows As Integer
    Dim RowItem As Integer

    Rows = 1000
    For RowItem = 0 To Rows
        Sheet1.Range("ProgressBar").Value = RowItem / Rows
    Next RowItem
    MsgBox "Done!"
    Sheet1.Range("ProgressBar").Value = 0
End Sub
然后,这将更新单元格中的值,数据栏将随着值的增加而增长


您需要适应自己的代码,但这应该是一个起点。

创建进度条的一些方法:

使用application.statusbar

或者,使用userform,在其中更改任何矩形类型的宽度属性,我使用带有漂亮图片字体的按钮

使用形状,从中通过更改其宽度属性来更改大小

最难的部分是让它足够快,所以它不会影响性能,有时也会 将application.screenUpdate=false联合添加到doevents时,它可能会闪烁。。。还是不

如果你需要一些代码,我可以为你提供一个示例,你可以根据需要进行更改