Добрый день,
У меня есть вопрос, который поможет мне лучше понять, как Excel VBA может эффективно управлять определенными диапазонами, которые были объявлены в одном месте, чтобы хорошо выполнять данные. Просто хочу выяснить, какие два варианта (я знаю до сих пор) лучше или нет в качестве предпочтительной передовой практики, прежде чем продолжить работу над этим проектом.
Проблема, которую я решаю, состоит в том, чтобы сделать небольшую таблицу, содержащую количество сбоев в наборе вымышленных поставщиков, поэтому таблица выглядит так (извините, что в необработанном виде)
"Название компании" "Количество отказов"
"Be Cool Machine" 7
"Кварталы охлаждающей жидкости" 5
"Little Water Coolants 3
"Системы подачи воздуха" 7
"Генеральные охлаждающие жидкости" 5
"Охлаждающие жидкости Admire" 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
Второй вариант (определяемое имя) — это модуль/формула следующим образом.
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
Любые предложения - я бы сделал тест таймера макроса позже, если это поможет?
Будет ли третий вариант, если я выберу диапазон, указанный в ячейке, как значение? Я не видел кода, который делает это на практике?