Pet*_*lor 3 performance vba excel-vba defined named-ranges
天儿真好,
我有一个问题,更多的是帮助我理解更多关于Excel VBA如何有效地管理已在一个地方声明的定义范围以便很好地执行数据.在更多关于这个项目的工作之前,只是想弄清楚哪两个选项(我知道到目前为止)是否是更好的最佳实践.
我正在解决的问题是在一组虚构的供应商中创建一个包含许多失败的小表,因此表格看起来像这样(抱歉它是原始形式)
"公司名称""失败的数量"
"冷却机器"7
"冷却剂宿舍"5
"小水冷却剂3
"空气移动系统"7
"将军冷却剂"5
"赞赏冷却剂"4
我的第一个选项(Const String)是这个模块/公式,如下所示.
Option Explicit
Public Const CountofFailures As String = "J7:J12"
Sub btnRandom()
' Declaration of variables
Dim c As Range
' Provide a random number for failures across Suppliers
For Each c In ActiveSheet.Range(CountofFailures)
c.Value = Random1to10
Next c
End Sub
Function Random1to10() As Integer
'Ensure we have a different value each time we run this macro
Randomize
' Provide a random number from 1 to 10 (Maximum number of Failures)
Random1to10 = Int(Rnd() * 10 + 1)
End Function
Run Code Online (Sandbox Code Playgroud)
第二个选项(定义名称)是此模块/公式如下.
Option Explicit
Sub btnRandom()
' Declaration of variables
Dim c As Range
Dim iLoop As Long
' Provide a random number for Suppliers with Defined Range
For Each c In ActiveWorkbook.Names("CountofFailures").RefersToRange
c.Value = Random1to10
Next c
End Sub
Function Random1to10() As Integer
'Ensure we have a different value each time we run this macro
Randomize
' Provide a random number from 1 to 10 (Maximum number of Failures)
Random1to10 = Int(Rnd() * 10 + 1)
End Function
Run Code Online (Sandbox Code Playgroud)
任何建议 - 如果这有帮助,我会稍后进行宏定时器测试?
如果我将单元格中列出的范围作为值获取,是否会有第三个选项?我还没有看到在实践中这样做的代码?
我不知道性能差异 - 我怀疑const更快.我的一般建议是"在遇到性能问题之前不要担心性能".否则你最终会猜测你的优化时间是什么,这可能不对.
对于命名范围,好处是它们在插入行和列时移动.如果在第I列插入新列,则需要编辑第一个示例,第二个示例将继续工作.