Страницы: 1
RSS
Можно ли задать массив через Range, добавив формулу для каждого элемента? Или только цикл?, на VBA
 
Файл прикладывать смысла нет, вопрос короткий.

Задаю массив. Для простоты кода переменные заменены на абсолютные значения.
Код
arr = Range(Cells(1, 1), Cells(10, 10)).Value

Я работаю с текстом, и мне нужно чтобы в массив попадали значения без лишних пробелов, которые могут быть в конце слов.

Как прикрутить функцию Application.Trim("ячейка") к массиву, чтобы в него попадали уже обработанные данные, без лишних пробелов?
Только циклом или есть синтаксис для этого?
 
Думаю без перебора ячеек (или элементов массива) не обойтись
Согласие есть продукт при полном непротивлении сторон
 
zamboga,
Код
arr = Application.Trim(Range(Cells(1, 1), Cells(10, 10)))
'или
arr = Evaluate("INDEX(TRIM(A1:J10),)")
Изменено: Казанский - 12.12.2016 17:15:25
 
Казанский, тфу ты, как просто. Надо было попробовать так написать сразу, но я что-то не рискнул так кодить для массива=))

Спасибо!
 
Цитата
zamboga написал: тфу ты, как просто
это когда уже знаешь, тогда просто :)
F1 творит чудеса
 
ага, вот и я теперь знаю  :)
Согласие есть продукт при полном непротивлении сторон
 
Здравствуйте.
У меня схожий вопрос. Подскажите пожалуйста, почему конструкция с использованием UsedRange вида:
Код
Dim Arr()
For Wr = 1 To Worksheets.Count
Arr = Worksheets(Wr).UsedRange.Value
...
Next

работает, а при попытке указать конкретный диапазон в строке 3, выдает ошибку 1004, "Application-defined or object-defined error". Пытаюсь задавать следующим образом:
Код
Arr = Worksheets(Wr).Range(Cells(3, 1), Cells(100, 6)).Value

Заранее спасибо.
 
Скорее всего потому, что надо вот так:
Код
Arr = Worksheets(Wr).Range(Worksheets(Wr).Cells(3, 1), Worksheets(Wr).Cells(100, 6)).Value

либо

With Worksheets(Wr)
Arr = .Range(.Cells(3, 1), .Cells(100, 6)).Value
End With



Обращаясь к ячейкам, если они не на активном листе - требуется указание объекта-родителя (листа). По-моему я ничего не напутал. :)
Кому решение нужно - тот пример и рисует.
 
Вы ничего не напутали, все работает, большое спасибо !
 
VSerg,
Код
'или
Arr = Worksheets(Wr).Cells(3, 1).Resize(m, n).Value
'Или
adr = Range(Cells(3, 1), Cells(100, 6)).Address 'до цикла

Arr = Worksheets(Wr).Range(adr).Value 'в цикле
 
Казанский, большое спасибо !
Страницы: 1
Наверх