• 为什么在激活 think-cell 时我的 Excel 宏速度缓慢?


    导致 VBA 宏出现性能问题的一个常见问题是使用 .Select 函数。每次在 Excel 中选择单元格时,都会将此选择对象更改事件通知每个单一的 Excel 加载项(包括think-cell),这会大幅降低宏的速度。尤其是使用宏记录器创建的宏,更容易出现此类问题。
    Microsoft 也建议在 VBA 代码中避免使用 .Select 语句,以提高性能。
    示例:如何避免使用 .Select 语句
    接下来看看以下的简单宏 AutoFillTable:
    Sub AutoFillTable()
        Dim iRange As Excel.Range
        Set iRange = Application.InputBox(prompt:="Enter range", Type:=8)
        Dim nCount As Integer
        nCount = iRange.Cells.Count
        For i = 1 To nCount
            Selection.Copy
            If iRange.Cells.Item(i).Value = "" Then
                iRange.Cells.Item(i).Range("A1").Select
                ActiveSheet.Paste
            Else
                iRange.Cells.Item(i).Range("A1").Select
            End If
        Next
    End Sub
    此函数将打开输入框,该框会请求用户指定单元格范围。此函数会移动范围内的所有单元格。若发现非空的单元格,它会将单元格内容复制到剪贴板。该函数会将剪贴板内容粘贴到随后的每个空单元格。
    AutoFillTable 使用剪贴板来复制单元格内容。因此,该函数需要选择所操作的每个单元格,以便 Excel 知道从哪个单元格进行复制以及应粘贴到哪个单元格。建议的解决方案显示在以下 AutoFillTable2 函数中:
    Sub AutoFillTable2()
        Dim iRange As Excel.Range
        Set iRange = Application.InputBox(prompt:="Enter range", Type:=8)
        Dim iCellMaster As Excel.Range
        For Each iCell In iRange.Cells
            If iCell.Value = "" Then
                If Not iCellMaster Is Nothing Then
                    iCellMaster.Copy (iCell)
                End If
            Else
                Set iCellMaster = iCell
            End If
        Next iCell
    End Sub
    AutoFillTable2 与以上函数在两个重要方面有所不同:
    1.最重要的是,AutoFillTable2 不再需要选择单元格。相反,若发现某单元格非空,则会将该单元格存储在变量 iCellMaster 中。此后,若发现空单元格,则会将 iCellMaster 的所有内容复制到 iCell 中。
    2.它使用 Visual Basic 语言特征 For Each … Next 来访问范围中的每个单元格。这已经改善了易读性。

  • 相关阅读:
    ML&DL:《Hyperparameter tuning for machine learning models机器学习模型的超参数调优》翻译与解读
    华为OD 最小传输时延(100分)【java】A卷+B卷
    前端向后端传递数组
    canvas画布绘图
    神奇的JavaScript弱等价类型转换
    考了PMP有什么好处?
    泰迪云课堂《Python中文自然语言处理基础与实战》
    Cadence学习篇(12) Cadence中使用Pspice进行电路仿真
    【Linux】iptables之防火墙概述及规则匹配+实例(1)
    Nginx动静分离、缓存配置、性能调优、集群配置
  • 原文地址:https://blog.csdn.net/goldksoft/article/details/127446491