G'Day,Excel VBA - 任何性能優勢之間的const字符串範圍或定義名稱的範圍?
我有一個問題更多的是幫助我更多地瞭解Excel VBA如何有效地管理爲了執行數據而在一個地方聲明的定義範圍。只是想在計算這個項目之前找出哪兩個選項(我目前知道的)更好或者不是最佳實踐。
我解決的問題是使在一組虛構的供應商包含了一些失敗的一張小桌子,這樣的表格看起來像這樣(抱歉它是原始形式)
「公司名稱」,「故障」
「號酷機」 7
「冷卻液宿舍」 5
「少量的水冷卻液3
‘空氣推進系統’7
「將軍冷卻液」 5
「佩服冷卻劑」 4
我的第一個選項(常量字符串)是該模塊/公式如下。
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
第二個選項(Defined Name)是這個模塊/公式如下。
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
任何建議 - 如果有幫助,我會做一個宏計時器測試?
如果我將單元格中列出的範圍讀取爲值,會有第三個選項嗎?我沒有看到過這樣的代碼在實踐中?
Brett,我是否正確地說最後的.value = .value行與副本相同,粘貼特殊的相等值? –
是的 - 它將公式轉換爲 – brettdj
的值,感謝Brett的建議。我會安排子程序遵循這個一般模式。 –