Страницы: 1
RSS
Удаление элемента массива массивов VBA, удалить элемент массива, вложенного в другой массив
 
Добрый вечер!
Необходимо удалить элемент массива, вложенного в другой массив.
Пробую ReDim Preserve source(0 to Ubound(source))(0 to k), где k новая размерность второго массива.
Help!!!)) Что не так сделал?  
 
Цитата
d.zolotarev написал: Что не так сделал?
да уж немало
правила форума не прочитал
файл не приложил
нафига вообще нужны такие заморочки - не объяснил
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ReDim Preserve может менять только последнюю границу массива. И то как правило используется для расширения, а не наоборот.
Чтобы удалять элемент внутри массива нужен еще один промежуточный массив, в который будут записаны все элементы прежнего массива, кроме того, который необходимо удалить.
Но скорее проще будет на словарях сделать - там есть метод Remove
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
Sub test()
Dim v(1 To 2), x
v(1) = Array(-1, -2)
v(2) = Array("a", "b", "c")
'redim preserve v(2)(0 to 1) 'не работает
'так работает
x = v(2)
ReDim Preserve x(0 To 1)
v(2) = x
End Sub
 
Даже без Preserve, на месте отладчика я бы Redim v(2)...и_дальше_не_важно_что рассматривал как попытку изменить размерность v(0 to 2) :)
Для отладчика это неопределенность: какой из массивов (1-й или 2-й) нужно ReDim-ить. При этом ...и_дальше_не_важно_что рассматривается уже как синтаксическая ошибка.
Изменено: ZVI - 23.06.2015 05:31:55
Страницы: 1
Читают тему
Наверх