Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Упрощение макроса извлечения строк из таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Упрощение макроса извлечения строк из таблицы
Упрощение макроса извлечения строк из таблицы
pechkin Дата: Воскресенье, 19.01.2014, 18:43 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Здравсвуйте! Всех с ПРАЗДНИКОМ! Прошу прощения за безграмотность. Подскажите, как упростить этот код макроса (если возможно)
[vba]
Код
Cells(rw, 10).Resize(, 3) = Array(.Cells(i, 11), .Cells(i, 12), .Cells(i, 13))
[/vba]
Далее есть похожий код из одиннадцати ячеек и все перечислять... Пробовал разные варианты типа
[vba]
Код
Cells(rw, 10).Resize(, 3) = Array(.Range(.Cells(i, 11),  .Cells(i, 13)))
[/vba]- Не работает
Спасибо!


Сообщение отредактировал pechkin - Воскресенье, 19.01.2014, 18:44
 
Ответить
СообщениеЗдравсвуйте! Всех с ПРАЗДНИКОМ! Прошу прощения за безграмотность. Подскажите, как упростить этот код макроса (если возможно)
[vba]
Код
Cells(rw, 10).Resize(, 3) = Array(.Cells(i, 11), .Cells(i, 12), .Cells(i, 13))
[/vba]
Далее есть похожий код из одиннадцати ячеек и все перечислять... Пробовал разные варианты типа
[vba]
Код
Cells(rw, 10).Resize(, 3) = Array(.Range(.Cells(i, 11),  .Cells(i, 13)))
[/vba]- Не работает
Спасибо!

Автор - pechkin
Дата добавления - 19.01.2014 в 18:43
doober Дата: Воскресенье, 19.01.2014, 18:51 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Цитата
- Не работает

Не удивительно.
N =номер столбца
[vba]
Код
Arr = .Range(.Cells(i, 11), .Cells(i, N))
Cells(rw, 10).Resize(, UBound(Arr, 2)) = Arr
[/vba]


 
Ответить
Сообщение
Цитата
- Не работает

Не удивительно.
N =номер столбца
[vba]
Код
Arr = .Range(.Cells(i, 11), .Cells(i, N))
Cells(rw, 10).Resize(, UBound(Arr, 2)) = Arr
[/vba]

Автор - doober
Дата добавления - 19.01.2014 в 18:51
pechkin Дата: Воскресенье, 19.01.2014, 19:17 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Спасибо, doober! С макросами я не знаком. Все они взяты на сайте и форуме. Пытаюсь методом "тыка" что-то изменять и корректировать . Прошу разъяснить, что значит [vba]
Код
Resize(, UBound(Arr, 2)) = Arr
[/vba]
особенно двойка и если продолжать код , начиная с другой ячейки то уже будет Arr1 например?
[vba]
Код
Arr1 = .Range(.Cells(i, 3), .Cells(i, 10))
  Cells(rw, 2).Resize(, UBound(Arr1, 2)) = Arr
[/vba]
 
Ответить
СообщениеСпасибо, doober! С макросами я не знаком. Все они взяты на сайте и форуме. Пытаюсь методом "тыка" что-то изменять и корректировать . Прошу разъяснить, что значит [vba]
Код
Resize(, UBound(Arr, 2)) = Arr
[/vba]
особенно двойка и если продолжать код , начиная с другой ячейки то уже будет Arr1 например?
[vba]
Код
Arr1 = .Range(.Cells(i, 3), .Cells(i, 10))
  Cells(rw, 2).Resize(, UBound(Arr1, 2)) = Arr
[/vba]

Автор - pechkin
Дата добавления - 19.01.2014 в 19:17
doober Дата: Воскресенье, 19.01.2014, 21:22 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Массив имеет свою размерность,количество строк.количество столбцов.
UBound(Arr, 1)'-это количество строк массива
UBound(Arr, 2)'-это количество столбцов массива.
Правильно записать так
[vba]
Код
Resize( UBound(Arr, 1), UBound(Arr, 2)) = Arr
[/vba]
Растягиваем массив на количество строк= UBound(Arr, 1)
Растягиваем массив на количество столбцов= UBound(Arr, 2)
'относительно ячейки Cells(rw, 2)
[vba]
Код
Arr = .Range(.Cells(i, 3), .Cells(i, 10))
Cells(rw, 2).Resize(, UBound(Arr, 2)) = Arr
  'В этом случае можно записать так
Cells(rw, 2).Resize(1, 8) = Arr

[/vba]




Сообщение отредактировал doober - Воскресенье, 19.01.2014, 21:26
 
Ответить
СообщениеМассив имеет свою размерность,количество строк.количество столбцов.
UBound(Arr, 1)'-это количество строк массива
UBound(Arr, 2)'-это количество столбцов массива.
Правильно записать так
[vba]
Код
Resize( UBound(Arr, 1), UBound(Arr, 2)) = Arr
[/vba]
Растягиваем массив на количество строк= UBound(Arr, 1)
Растягиваем массив на количество столбцов= UBound(Arr, 2)
'относительно ячейки Cells(rw, 2)
[vba]
Код
Arr = .Range(.Cells(i, 3), .Cells(i, 10))
Cells(rw, 2).Resize(, UBound(Arr, 2)) = Arr
  'В этом случае можно записать так
Cells(rw, 2).Resize(1, 8) = Arr

[/vba]

Автор - doober
Дата добавления - 19.01.2014 в 21:22
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Упрощение макроса извлечения строк из таблицы
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!