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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование диапазона на другой лист, без замены данных. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование диапазона на другой лист, без замены данных. (Макросы/Sub)
Копирование диапазона на другой лист, без замены данных.
mortalwindos Дата: Четверг, 11.02.2016, 11:30 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день. Макрос копирует значение ячеек без формул, и вставляет на другой лист в ячейку B2 [vba]
Код
Sub Go()
If MsgBox("Оформить?", _
vbYesNo) = vbYes Then Application.ScreenUpdating = False
Range("A1:E60").Copy
With Sheets("Лист2").Range("B2")
    .PasteSpecial Paste:=xlPasteValues
    .PasteSpecial Paste:=xlPasteFormats
    .PasteSpecial Paste:=xlPasteColumnWidths
End With
With Application
     .ScreenUpdating = True: .CutCopyMode = False
End With
End Sub
[/vba] подскажите как сделать, чтобы данные добавлялись ниже, а не заменяли предыдущие.
К сообщению приложен файл: 6995120.xlsx(15Kb)


Сообщение отредактировал mortalwindos - Четверг, 11.02.2016, 11:30
 
Ответить
СообщениеДобрый день. Макрос копирует значение ячеек без формул, и вставляет на другой лист в ячейку B2 [vba]
Код
Sub Go()
If MsgBox("Оформить?", _
vbYesNo) = vbYes Then Application.ScreenUpdating = False
Range("A1:E60").Copy
With Sheets("Лист2").Range("B2")
    .PasteSpecial Paste:=xlPasteValues
    .PasteSpecial Paste:=xlPasteFormats
    .PasteSpecial Paste:=xlPasteColumnWidths
End With
With Application
     .ScreenUpdating = True: .CutCopyMode = False
End With
End Sub
[/vba] подскажите как сделать, чтобы данные добавлялись ниже, а не заменяли предыдущие.

Автор - mortalwindos
Дата добавления - 11.02.2016 в 11:30
Manyasha Дата: Четверг, 11.02.2016, 12:10 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
mortalwindos, здравствуйте, так можно:
[vba]
Код
Sub Go_()
    If MsgBox("Оформить?", vbYesNo) <> vbYes Then Exit Sub
    Application.ScreenUpdating = False
    lrSh1 = Cells(Rows.Count, 1).End(xlUp).Row
    lrSh2 = Sheets("Лист2").Cells(Rows.Count, 2).End(xlUp).Row+1
    Range("A1:E" & lrSh1).Copy
    With Sheets("Лист2").Range("B" & lrSh2)
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
        .PasteSpecial Paste:=xlPasteColumnWidths
    End With
    With Application
        .ScreenUpdating = True: .CutCopyMode = False
    End With
End Sub
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804


Сообщение отредактировал Manyasha - Четверг, 11.02.2016, 12:27
 
Ответить
Сообщениеmortalwindos, здравствуйте, так можно:
[vba]
Код
Sub Go_()
    If MsgBox("Оформить?", vbYesNo) <> vbYes Then Exit Sub
    Application.ScreenUpdating = False
    lrSh1 = Cells(Rows.Count, 1).End(xlUp).Row
    lrSh2 = Sheets("Лист2").Cells(Rows.Count, 2).End(xlUp).Row+1
    Range("A1:E" & lrSh1).Copy
    With Sheets("Лист2").Range("B" & lrSh2)
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
        .PasteSpecial Paste:=xlPasteColumnWidths
    End With
    With Application
        .ScreenUpdating = True: .CutCopyMode = False
    End With
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 11.02.2016 в 12:10
al-Ex Дата: Четверг, 11.02.2016, 12:11 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 149
Репутация: 53 ±
Замечаний: 0% ±

Excel 2010
Вот так не подойдёт?
каждый раз сохранять данные (8-10 констант) получаемые при расчете, переносить их на второй лист, каждый раз в новую строку.


[vba]
Код

Sub MySave()
'Вот так вставляем новую строку "Rows("2:2")", в "Sheets("В работе")"
Sheets("В работе").Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'Новая запись всегда вставляется во вторую строку листа "В работе"
'Старые строки при этом просто сдвигаются вниз.
    
'вот так из листа  "просчёт" переносим значения на лист "в работе"
Sheets("В работе").Cells(2, 1).Value = Sheets("просчет").Cells(1, 1).Value
Sheets("В работе").Cells(2, 17).Value = Sheets("просчет").Cells(3, 1).Value
'___следующие значения сюда_________________
'остальные значения просто по аналогии делаем (адресация: Cells(номер cтроки, номер колонки))
'Сохраняем книгу после внесенных изменений.
    ActiveWorkbook.Save
End Sub
[/vba]


Сообщение отредактировал al-Ex - Четверг, 11.02.2016, 12:15
 
Ответить
СообщениеВот так не подойдёт?
каждый раз сохранять данные (8-10 констант) получаемые при расчете, переносить их на второй лист, каждый раз в новую строку.


[vba]
Код

Sub MySave()
'Вот так вставляем новую строку "Rows("2:2")", в "Sheets("В работе")"
Sheets("В работе").Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'Новая запись всегда вставляется во вторую строку листа "В работе"
'Старые строки при этом просто сдвигаются вниз.
    
'вот так из листа  "просчёт" переносим значения на лист "в работе"
Sheets("В работе").Cells(2, 1).Value = Sheets("просчет").Cells(1, 1).Value
Sheets("В работе").Cells(2, 17).Value = Sheets("просчет").Cells(3, 1).Value
'___следующие значения сюда_________________
'остальные значения просто по аналогии делаем (адресация: Cells(номер cтроки, номер колонки))
'Сохраняем книгу после внесенных изменений.
    ActiveWorkbook.Save
End Sub
[/vba]

Автор - al-Ex
Дата добавления - 11.02.2016 в 12:11
Wasilich Дата: Четверг, 11.02.2016, 12:15 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 873
Репутация: 221 ±
Замечаний: 0% ±

2003
По моему, здесь надо +1
[vba]
Код
lrSh2 = Sheets("Лист2").Cells(Rows.Count, 2).End(xlUp).Row + 1
[/vba]
 
Ответить
СообщениеПо моему, здесь надо +1
[vba]
Код
lrSh2 = Sheets("Лист2").Cells(Rows.Count, 2).End(xlUp).Row + 1
[/vba]

Автор - Wasilich
Дата добавления - 11.02.2016 в 12:15
Manyasha Дата: Четверг, 11.02.2016, 12:27 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
Wasilic, да точно, это я поторопилась, спасибо!
Пост выше поправила!


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеWasilic, да точно, это я поторопилась, спасибо!
Пост выше поправила!

Автор - Manyasha
Дата добавления - 11.02.2016 в 12:27
mortalwindos Дата: Четверг, 11.02.2016, 13:38 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо всем. Работает как часы! clap
 
Ответить
СообщениеСпасибо всем. Работает как часы! clap

Автор - mortalwindos
Дата добавления - 11.02.2016 в 13:38
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование диапазона на другой лист, без замены данных. (Макросы/Sub)
Страница 1 из 11
Поиск:

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