Добрый день! Есть прайс. В нем реализовано формирование списка товаров (список формируется на листе "Накладная" с листа "Прайс"), далее на листе "Накладная" есть кнопка "Внести в историю заказов" которая работает так: Менеджер ручками выбирает диапазон, нажимает на кнопку и выбранный диапазон копируется со сдвигом на Лист "История заказов".
Задача стоит такая: Нужно по средством того же макроса, присвоенного кнопке "Внести в историю заказов", после копирования диапазона со сдвигом, в столбце "А" (лист "История заказов") объединить ячейки. Количество объединяемых в столбце "А" ячеек равно количеству строк в скопированном диапазоне. После объединения ячеек полученной ячейке присвоить текущую дату. А в столбце "В" проделать такую же операцию объединения ячеек и присвоить номер заказа, соответственно номер заказа должен всегда быть на +1 больше предыдущего.
Добрый день! Есть прайс. В нем реализовано формирование списка товаров (список формируется на листе "Накладная" с листа "Прайс"), далее на листе "Накладная" есть кнопка "Внести в историю заказов" которая работает так: Менеджер ручками выбирает диапазон, нажимает на кнопку и выбранный диапазон копируется со сдвигом на Лист "История заказов".
Задача стоит такая: Нужно по средством того же макроса, присвоенного кнопке "Внести в историю заказов", после копирования диапазона со сдвигом, в столбце "А" (лист "История заказов") объединить ячейки. Количество объединяемых в столбце "А" ячеек равно количеству строк в скопированном диапазоне. После объединения ячеек полученной ячейке присвоить текущую дату. А в столбце "В" проделать такую же операцию объединения ячеек и присвоить номер заказа, соответственно номер заказа должен всегда быть на +1 больше предыдущего.SanchesLi
[offtop]rosko, все предельно просто: .Cells(0) возвращает предыдущую ячейку, а т.к. [vba]
Код
With .Cells(lastRow, 1).Resize(nRows)
[/vba] ссылается на ячейки одного столбца, то .Cells(0) вернет ячейку в том же столбце, предшествующую указанному диапазону. Далее, если мы ссылаемся на одну из ячеек, в котором есть объединенные ячейки, то свойство .MergeArea вернет нам полный диапазон, а .Cells(1) вернет первую ячейку этого диапазона, т.к. значение извлекается именно из первой ячейки диапазона с объединенными ячейками. Ну, а обернуто это все в функцию Val() для того, чтобы если ее аргументом будет не число, а например текст, то она вернет 0, а не ошибку.
Как-то сумбурно... Лучше см. на примере.
[/offtop]
[offtop]rosko, все предельно просто: .Cells(0) возвращает предыдущую ячейку, а т.к. [vba]
Код
With .Cells(lastRow, 1).Resize(nRows)
[/vba] ссылается на ячейки одного столбца, то .Cells(0) вернет ячейку в том же столбце, предшествующую указанному диапазону. Далее, если мы ссылаемся на одну из ячеек, в котором есть объединенные ячейки, то свойство .MergeArea вернет нам полный диапазон, а .Cells(1) вернет первую ячейку этого диапазона, т.к. значение извлекается именно из первой ячейки диапазона с объединенными ячейками. Ну, а обернуто это все в функцию Val() для того, чтобы если ее аргументом будет не число, а например текст, то она вернет 0, а не ошибку.
KSV, Ваше решение мне очень помогло, но еще раз хотелось бы вернутся к этому примеру. Не могу понять как в ячейку "J" (Лист - История заказов) поместить общую сумму из значений ячеек вставленных этой процедурой в столбец "i"
KSV, Ваше решение мне очень помогло, но еще раз хотелось бы вернутся к этому примеру. Не могу понять как в ячейку "J" (Лист - История заказов) поместить общую сумму из значений ячеек вставленных этой процедурой в столбец "i"SanchesLi