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

Вход

Регистрация

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

 

= Мир MS Excel/Прописать копирование в VBA по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Прописать копирование в VBA по условию
Senya_20 Дата: Пятница, 27.11.2020, 18:00 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
В примере таблица ввода данных, макрос копирует диапазон.
Worksheets("Движение товара").Range("B19:O23").Copy
Как прописать чтобы копирование срабатывало только на тот диапазон, из условия (В19:О23),в котором заполнена ячейка из столбика "В"
К сообщению приложен файл: 2532848.xlsm (29.3 Kb)
 
Ответить
СообщениеВ примере таблица ввода данных, макрос копирует диапазон.
Worksheets("Движение товара").Range("B19:O23").Copy
Как прописать чтобы копирование срабатывало только на тот диапазон, из условия (В19:О23),в котором заполнена ячейка из столбика "В"

Автор - Senya_20
Дата добавления - 27.11.2020 в 18:00
Gustav Дата: Понедельник, 30.11.2020, 09:32 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Я бы использовал автофильтр в области B19:O23 с отбором (отображением) строк, в которых заполнена ячейка из столбика B и далее копировал эти видимые строки на лист БД. Примерно таким кодом:
[vba]
Код
Sub copyVisibleRows()
    Dim rng As Range
    On Error Resume Next
    Worksheets("Движение товара").ListObjects("Таблица22").Range.AutoFilter Field:=1, Criteria1:="<>"
    Set rng = Worksheets("Движение товара").Range("B19:O23").SpecialCells(xlCellTypeVisible)
    If Err = 0 Then
        rng.Copy
        Worksheets("БД Движения товара").Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
    Worksheets("Движение товара").ListObjects("Таблица22").Range.AutoFilter Field:=1
End Sub
[/vba]
Обратите внимание, что подобное копирование из-под фильтра работает и при отборе несмежных строк в диапазоне B19:O23. Т.е., например, фильтр отобрал строки 1,2 и 4 - в БД они добавятся в конец списка как 3 последовательные строки.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЯ бы использовал автофильтр в области B19:O23 с отбором (отображением) строк, в которых заполнена ячейка из столбика B и далее копировал эти видимые строки на лист БД. Примерно таким кодом:
[vba]
Код
Sub copyVisibleRows()
    Dim rng As Range
    On Error Resume Next
    Worksheets("Движение товара").ListObjects("Таблица22").Range.AutoFilter Field:=1, Criteria1:="<>"
    Set rng = Worksheets("Движение товара").Range("B19:O23").SpecialCells(xlCellTypeVisible)
    If Err = 0 Then
        rng.Copy
        Worksheets("БД Движения товара").Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End If
    Worksheets("Движение товара").ListObjects("Таблица22").Range.AutoFilter Field:=1
End Sub
[/vba]
Обратите внимание, что подобное копирование из-под фильтра работает и при отборе несмежных строк в диапазоне B19:O23. Т.е., например, фильтр отобрал строки 1,2 и 4 - в БД они добавятся в конец списка как 3 последовательные строки.

Автор - Gustav
Дата добавления - 30.11.2020 в 09:32
Senya_20 Дата: Среда, 02.12.2020, 14:43 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Большое спасибо!!
 
Ответить
СообщениеБольшое спасибо!!

Автор - Senya_20
Дата добавления - 02.12.2020 в 14:43
  • Страница 1 из 1
  • 1
Поиск:

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