相关疑难解决方法(0)

在Excel VBA中强制执行屏幕更新

我的Excel工具执行一项长任务,我试图通过在状态栏或工作表中的某个单元格中提供进度报告来对用户表示友好,如下所示.但屏幕不刷新,或在某些时候停止刷新(例如33%).任务最终完成但进度条无用.

我该怎么做才能强制更新屏幕?

For i=1 to imax ' imax is usually 30 or so
    fractionDone=cdbl(i)/cdbl(imax)
    Application.StatusBar = Format(fractionDone, "0%") & "done..."
    ' or, alternatively:
    ' statusRange.value = Format(fractionDone, "0%") & "done..."

    ' Some code.......

Next i
Run Code Online (Sandbox Code Playgroud)

我正在使用Excel 2003.

excel vba excel-vba

28
推荐指数
3
解决办法
14万
查看次数

在VBA中使用进度表下载文件

我已经找到了很多用几种语言来做这个的例子,但没有一个是VBA特有的.这个问题,如何使用进度条下载VB6中的多个文件?,解决了在VB6中执行此操作的三种不同方法.

  1. 使用VB6 UserControl/UserDocument对象的ASyncRead属性
  2. 使用类型库olelib.tlb和IBindStatusCallback接口
  3. 使用wininet.dll将您自己的下载编写为文件功能

这些方法都不适合我,因为:

  1. VBA无法使用UserControl/UserDocument对象
  2. 我宁愿不必维护和分发大的外部依赖
  3. 我没有看到明显的方法来获得当前的文件下载进度

上面的2号似乎是最有希望的.我想知道我是否可以在我的VBA项目中使用类模块创建IBindStatusCallback接口?

或者可能使用上面的数字3提供可用于提供当前进度的属性/方法.任何帮助深表感谢.

vba download access-vba

10
推荐指数
1
解决办法
4108
查看次数

在每行之后插入n个空白单元格的代码非常慢

这将是我的代码,但如果我有超过5000行和1列,则需要一生.有没有办法减少查询时间?

Sub InsertRows() 
    Dim numRows As Integer 
    Dim r As Long 

    Application.ScreenUpdating = False 

    r = Cells(Rows.Count, "A").End(xlUp).Row 
    numRows = 11 

    For r = r To 1 Step -1 
        ActiveSheet.Rows(r + 1).Resize(numRows).Insert 
    Next r 

    Application.ScreenUpdating = True 
End Sub
Run Code Online (Sandbox Code Playgroud)

excel optimization vba excel-vba

2
推荐指数
1
解决办法
1732
查看次数

标签 统计

vba ×3

excel ×2

excel-vba ×2

access-vba ×1

download ×1

optimization ×1