excel - 需要建议:VBA,从 BOM 中收集范围以一次更改多行的格式
问题描述
早上好,我需要一些建议。
首先,这是我的完整脚本。我正在迭代制造 BOM:
我在 VBA 方面不是最擅长的,但我整理了一个工作脚本,根据级别填充这些行的颜色/边框。目前,我在 for 循环中使用 union 将范围分组在一起:
Case 1
If arrRngFill(1) Is Nothing Then
Set arrRngFill(1) = Range(Cells(rwCount, 1), Cells(rwCount, colLast))
Else
Set arrRngFill(1) = Union(arrRngFill(1), Range(Cells(rwCount, 1), Cells(rwCount, colLast)))
End If
'etc... for 8 levels
但是,我正在迭代超过 190,000 行,这些行都停止了。
因此,作为一个 hacky 工作,我每 6000 个循环应用一次格式(越多越慢)并清除数组:
'Do stuff and release every 6000 ticks or on last row - Union is super slow when it gets big for some reason
If releaseTick = 6000 Or lvlNext = -1 Then
If Not arrRngFill(1) Is Nothing Then Call SetFill(arrRngFill(1), RGB(44, 35, 45), RGB(0, 0, 0), RGB(0, 0, 0), True)
If Not arrRngFill(2) Is Nothing Then Call SetFill(arrRngFill(2), RGB(77, 76, 125), RGB(0, 0, 0), RGB(0, 0, 0), True)
'etc..... for 8 levels
Erase arrRngFill
releaseTick = 1
End If
我的问题是:有没有一种更简洁的方法可以在不减慢脚本速度的情况下做到这一点?我的目标是一次应用所有格式。每 6000 次循环都必须转储格式似乎是错误的,我认为我遗漏了一些东西。目前,该脚本在 190,000 行中大约需要 5.5 秒。
感谢您的关注!
解决方案
推荐阅读
- excel - 在excel中求和,直到满足值并显示列标题
- scala - Scala Spark 用 NULL 替换空字符串
- php - 我可以编写将在functions.php中的自定义函数中回显的自定义字段数据吗?
- c# - IValueConverter 参数检查
- reactjs - React - 如何根据粘性标题中儿童的身高变化调整身体填充?
- android - 无法更改从 Firebase 控制台发送的 Firebase 云消息传递通知的默认图标
- c# - 在c#中删除所有具有相同父级的动态创建的PictureBox
- python - 在python中使用蒙特卡罗方法
- java - 休眠mysql连接失败
- c# - 如何使用 Expression.Parameter 从匿名类型中获取属性?