excel - VBA Excel格式化真的很慢
问题描述
我试图找出一种更好的方法来使用 VBA 格式化单元格。我正在尝试从 Excel 表单控件中替换一个选项按钮(它工作正常但很丑。它看起来像旧的 W95)。我没有使用activeX,因为如果我使用activex,我不能相信每个用户都能够打开这个工作簿。
所以,我试图使用一些 VBA 来格式化一个按下按钮的单元格。应该很容易将 SUB 格式化为已按下的格式,而另一个则为未按下的格式。但是这段代码运行时间不少于 13 秒!这是不可行的。
我进行了一些研究并找到了其他主题,包括“VBA 代码优化”
VBA 代码优化
其他主题:
使用 vba 进行慢速单元格格式化?但我的情况只是边框和单元格颜色
格式化单元格时VBA代码极慢从我获得优化代码的地方
这是代码
Sub BtnSelect()
Dim t
t = Timer
With Selection
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Color = -1740185
.TintAndShade = 0
.Weight = xlMedium
End With
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Color = -1740185
.TintAndShade = 0
.Weight = xlMedium
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Color = -736322
.TintAndShade = 0
.Weight = xlMedium
End With
With .Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Color = -736322
.TintAndShade = 0
.Weight = xlMedium
End With
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
With .Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 16576494
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
Debug.Print Timer - t
End Sub
我究竟做错了什么?这个简单的操作需要这么长时间,有点愚蠢。非常感谢你!
解决方案
这对我来说在 <0.02 秒内运行
Sub BtnSelect()
Dim t
t = Timer
With Selection
With .Borders()
.LineStyle = xlContinuous
.TintAndShade = 0
.Weight = xlMedium
End With
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
.Borders(xlEdgeLeft).Color = -1740185
.Borders(xlEdgeTop).Color = -1740185
.Borders(xlEdgeBottom).Color = -736322
.Borders(xlEdgeRight).Color = -736322
.Interior.Color = 16576494
End With
Debug.Print Timer - t
End Sub
推荐阅读
- matlab - 如何提高基于符号函数的稀疏回归优化算法的计算复杂度?
- javascript - 在单页应用程序中重绘或重新初始化 windyAPI
- javascript - 在函数中使用 .sort 对数组进行排序等于 JavaScript 中的未定义
- swift - 何时使用可解码、可编码和可编码来检索数据或发送
- html - 侧边栏折叠时猫头鹰轮播效果不佳
- flutter - 在 Flutter App 中使用谷歌地图时出错
- python - 如何通过电报python中的按钮单击获取用户输入?
- amazon-web-services - dynamodb.put(...).promise.then 不是 AWS 中的函数
- javascript - 如何使用链接在 chart.js 中制作图表
- oracle - Oracle 函数 Select Into 无法正常工作