Это должно работать в соответствии с другим сообщением о переполнении стека, но это не так:
Dim arrWsNames As String() = {"Value1", "Value2"}
Может ли кто-нибудь сообщить мне, что не так?
arrays
vba
initialization
Кайран
источник
источник
Dim x() As Variant: x = [{"Value1", "Value2"}]
Dim x() As Variant: x = [{"Value1", "Value2"}]
ЕСЛИ вы используете переменные ... то есть, еслиv1 = "Value1"; v2 = "Value2"
, тоx = [{v1, v2}]
выдаст ошибку, аx = [{"Value1", "Value2"}]
не будет.Ответы:
Попробуй это:
источник
myArray = Array("A", "B", 12345, "D"...)
Dim arrWsNames() As String: arrWsNames = Split("Value1,Value2", ",")
инициализация из приведенного выше комментария не работает для меня, потому что Array () создает массив вариантов, а не строкиВ конкретном случае массива String вы можете инициализировать массив с помощью функции Split, поскольку она возвращает массив String, а не массив Variant:
Это позволяет избежать использования типа данных Variant и сохранить желаемый тип для arrWsNames.
источник
Проблема здесь в том, что длина вашего массива не определена, и это сбивает VBA с толку, если массив явно определяется как строка. Однако варианты, кажется, могут изменять размер по мере необходимости (потому что они занимают много памяти, и люди обычно избегают их по ряду причин).
Следующий код работает отлично, но он немного ручной по сравнению с некоторыми другими языками:
источник
Затем вы можете сделать что-то статичное, например:
Или что-то итеративное вроде этого:
источник
пример:
результат:
наслаждаться
edit: я удалил функцию удаления дублированных текстов и сделал код меньше и проще в использовании.
источник
variant
С помощью
работает, но
не так я сижу в варианте
источник
Dim MyArray() as String
или массив фиксированного размера:Dim MyArray(1 to 10) as String
.