У меня проблемы с тем, как я разработал этот маленький отчет, который я делаю. Можно ли создать переменную для объекта Range в Excel VBA, чтобы применить форматирование к другому Range? Вот мой пример:
Я создаю словарь из библиотеки Microsoft Scripting Runtime:
Dim d as Scripting.Dictionary
С этим я добавляю метки, значения и (пытаясь добавить) диапазоны.
Dim rng as Range
rng.Font.Bold = True
d.Add 1, Field("test1", 12345, rng)
rng.Font.Bold = False
d.Add 2, Field("TestTwo", "Testing field", rng)
rng.HorizontalAlignment = xlCenter
d.Add 3, Field("threeeee", 128937912, rng)
Dim key As Variant
For Each key In d.keys
Range("A" & key).value = d(key).Label
Set Range("B" & key).value = d(key).rng
Next key
Вот моя функция поля:
Private Function Field(Label As String, val As Variant, rng As Range) As cField
Dim f As New cField
f.Label = Label
f.val = val
Set f.rng = rng
Set Field = f
End Function
А вот мой класс cField:
Option Explicit
Dim mVarValue As Variant
Dim mStrLabel As String
Dim mRng As Range
Property Let val(ByVal val As Variant)
mVarValue = val
End Property
Property Get val() As Variant
val = mVarValue
End Property
Property Let Label(ByVal val As String)
mStrLabel = val
End Property
Property Get Label() As String
Label = mStrLabel
End Property
Property Let rng(ByVal val As Range)
Set mRng = val
End Property
Property Get rng() As Range
Dim a As Range
a.value = mVarValue
Set rng = a
End Property
Идея состоит в том, что ключ в словаре будет местоположением строки для поля. Таким образом, если необходимо внести изменения в отчет, который я делаю, единственное, что необходимо изменить, - это ключ для этого конкретного значения в словаре. Мне удалось сохранить метку для значения и само значение, но я также хочу сохранить форматирование для этого диапазона (полужирный, выравнивание, границы и т. Д.).
Я получаю сообщение «Ошибка времени выполнения» 91: переменная объекта или «Если переменная блока не установлена» в строке сразу после объявления rng. Мне интересно, если невозможно иметь общий диапазон, который не имеет местоположения на листе, или мой синтаксис каким-то образом отключен.
Любая помощь будет принята с благодарностью! :)