【问题标题】:Hiding Worksheet while copying and pasting复制和粘贴时隐藏工作表
【发布时间】:2014-04-03 19:38:00
【问题描述】:

我正在开发一些 Excel VBA 例程,它们从一个工作表中获取数据,生成其他工作簿,然后在它们之间复制各种工作表和数据。

我经常在工作簿/工作表之间来回切换。

有没有一种简单的方法可以将所有内容隐藏到最后并显示某种进度条?

当我需要复制/粘贴它们时,我不想隐藏/显示它们...我希望 excel 在后台默默地做所有事情。

有什么办法吗??

【问题讨论】:

  • 请调查Application.ScreenUpdating。这并不完全是您所要求的,但您应该意识到这一点。它也会加快你的代码速度。

标签: vba excel


【解决方案1】:

您可以暂时禁用 ScreenUpdating

Sub SilentRunning()
    Application.ScreenUpdating = False
    '
    '   do your thing
    '
    Application.ScreenUpdating = True
End Sub

【讨论】:

  • 谢谢,不知道。这似乎是我正在寻找的正确的。正如@Doug Glancy 指出的那样更整洁、更快
【解决方案2】:

@garys-student 指出禁用屏幕更新——如果你想为特别烦躁的用户更新进度条,你可以使用这个:

Application.StatusBar = "Processing row " & Idx & " of " & _
    LastRow & "... " & Format(Idx / LastRow, "0%") & " complete"
'
' do other stuff
'
Application.StatusBar = False 'reset the status bar

【讨论】:

  • Hi Dan:........如果屏幕更新被禁用,状态栏会更新吗??
  • 幸运的是。我提取的屏幕截图来自一些禁用屏幕更新但保持状态栏滚动的代码。有趣的东西!
  • 有趣。我想展示一个带有 ProgressBar 的 UserForm,但这种方法确实不错!!!
  • DoEvents 会导致表单自行更新(ProgressBar 宽度和完成百分比),即使 Application.ScreenUpdating = False
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多