【问题标题】:How to update Userform contents as code progresses如何随着代码的进展更新用户表单内容
【发布时间】:2019-06-04 23:05:43
【问题描述】:

我遇到了一个问题,我有一些运行不同功能的 vba 代码。我已经建立了一个用户表单,可以让用户随时了解进度。这不是进度条。它只是更改标签文本。但是,当我运行它时,没有任何变化。在我退出用户表单之前,代码不会完成。有谁知道如何解决这一问题?代码如下所示。谢谢!

frmALL.Show
xUpload ("DEV")
frmALL.devProgress.Caption = "Complete!"
frmALL.devProgress.ForeColor = vbGreen
frmALL.qaProgress.Caption = "Uploading"
xUpload ("QA")
frmALL.qaProgress.Caption = "Complete!"
frmALL.qaProgress.ForeColor = vbGreen
frmALL.prodProgress.Caption = "Uploading"
xUpload ("PROD")
frmALL.prodProgress.Caption = "Complete!"
frmALL.prodProgress.ForeColor = vbGreen
frmALL.Header.Caption = "Success!"

devProgress、prodProgress 和 qaProgress 都是用户表单中的代表标签。当我设置表单 showModal=false 时,它​​只会显示为白屏,直到完成代码然后显示所有“成功”。这是一个问题,因为它没有像我想象的那样显示进度。我的代码运行太快了吗?提前致谢!

【问题讨论】:

  • 如果您希望在用户窗体处于活动状态时发生其他活动,您需要将窗体加载为无模式,frmAll.Show vbModeless
  • @Cyril 我刚试过这个。它不像我预期的那样工作。首次加载时,它只是一个白屏。当代码运行并完成时,它会更新并在每个代码上显示“成功”。但是,它没有显示它们之间的任何进展。有没有办法解决这个问题?
  • 必须编写您的代码以“触发”您的不同行。无模式将允许在显示表单时发生其他操作,因此您提供的模块中的所有代码都会在加载表单时运行。让表单更改事件发生可能更合适,例如private sub combobox1_change(),如果您在组合框 1 中选择某事,则值会更改并触发某事发生(如标签更新)。

标签: excel vba userform


【解决方案1】:

将尝试根据您的代码提供_Change() 用法的快速示例:

Sub Open_UserForm()
    'make sure you have a userform_initialize subroutine for base info
    frmALL.Show vbModeless
End Sub

在您的用户表单的代码中,您可能有:

Private Sub ComboBox1_Change()
    'ASSUMES DEVPROGRESS IS TRIGGERED BY COMBOBOX1 VALUE CHANGE
    xUpload ("DEV")
    frmALL.devProgress.Caption = "Complete!"
    frmALL.devProgress.ForeColor = vbGreen
    frmALL.qaProgress.Caption = "Uploading"
End Sub

示例图片...我的示例的背景代码:

Private Sub UserForm_Initialize()
    ComboBox1.List = Array("cat", "dog")
End Sub

Private Sub combobox1_change()
    Label1.Caption = "label 1 = updated"
End Sub

从头开始的用户表单(在 IDE 中按 F5 启动):

我在组合框 1 中选择了一些东西:

Combobox1 值已更改,标签已更新:

【讨论】:

  • 请注意,我不需要为此使我的表单无模式,因为表单更改事件可以完成工作。我原始评论中的 vbmodeless 是针对您在 .show 之后使用的东西,所以它们都会运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多