Я пытаюсь сохранить значения из именованного диапазона в массив, и у меня возникают проблемы с именованными диапазонами, в которых есть текст, а не числа. (Эти именованные диапазоны являются динамическими, поэтому я хотел бы иметь возможность использовать именованные диапазоны, чтобы можно было добавлять дополнительные значения в списки и макрос для их включения.)
Для примера у меня есть два именованных диапазона: Fruit
и Quantity
. Ниже приведены значения в каждом диапазоне.
Fruit
: яблоки, апельсины и бананы (расположены в B3:B5
)
Quantity
: 3, 4 и 5 (находится в C3:C5
)
Ниже приведен код, который я придумал для хранения Fruit
в массиве.
Sub FruitArray()
Dim Fruits As Variant
Dim Fruit As Variant
Fruits = ThisWorkbook.Worksheets("Inventory").Range("Fruit") ' Run-time error '1004': Application-defined or object defined error
For Each Fruit In Fruits
Debug.Print Fruit
Next
End Sub
Когда я запускаю этот код, я получаю «Ошибка времени выполнения 1004: ошибка приложения или объекта», и отладчик выделяет строку Fruits = ThisWorkbook.Worksheets("Inventory").Range("Fruit")
.
Когда я запускаю почти идентичный код для Quantity
, он работает и печатает 3, 4, 5 в окне Immediate.
Sub QuantityArray()
Dim Quantities As Variant
Dim Quantity As Variant
Quantities = ThisWorkbook.Worksheets("Inventory").Range("Quantity")
For Each Quantity In Quantities
Debug.Print Quantity
Next
End Sub
Сначала я подумал, что проблема заключается в том, что я не могу сохранить текст в массивах из диапазона, но когда я указываю фактический диапазон в коде, а не именованный диапазон, он работает и печатает яблоки, апельсины и бананы.
Sub FruitArray()
Dim Fruits As Variant
Dim Fruit As Variant
Fruits = ThisWorkbook.Worksheets("Inventory").Range("B3:B5")
For Each Fruit In Fruits
Debug.Print Fruit
Next
End Sub
Есть ли что-то, чего мне не хватает, чтобы иметь возможность хранить текстовые значения именованных диапазонов в массиве?
Спасибо