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

Вход

Регистрация

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

 

= Мир MS Excel/Скопировать данные с одной таблицы в другую таблицу - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скопировать данные с одной таблицы в другую таблицу (Макросы/Sub)
Скопировать данные с одной таблицы в другую таблицу
lebensvoll Дата: Четверг, 28.07.2016, 13:12 | Сообщение № 1
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
Добрый день еще раз!!!
Оператор составляет заявку через UseForm и после того как заявка сформирована. Оператор нажимает кнопку "Скопировать данные в журнал заявок" и все данные копируются на лист в таблицу "Журнал заявок" (с каждым разом пополняя этими данными таблицу).
Я вроде бы нашел код который мне должен был помочь (((( но я или ошибся или же я не верно все отредактировал
[vba]
Код

Private Sub CommandButton4_Click()

    Dim shSheet_("Заявка МТ-1 для печати") As Excel.Worksheet, shSheet_("Журнал заявок") As Excel.Worksheet
    Dim lStartSheet_("Заявка МТ-1 для печати") As Long, lEndSheet_("Заявка МТ-1 для печати") As Long
    Dim lLastRow As Long
    Dim i As Long
       
    
    'Указываем, с какой по какую строку двигаться по первому листу
    'по столбцу "A".
    lStartSheet_("Заявка МТ-1 для печати") = 6
    lEndSheet_("Заявка МТ-1 для печати") = 20
    
    'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = 2
    
    'Даём листам имена "("Заявка МТ-1 для печати")" и "shSheet_("Журнал заявок")",
    'чтобы было удобнее писать код.
    Set shSheet_("Заявка МТ-1 для печати") = Worksheets("Заявка МТ-1 для печати")
    Set shSheet_("Журнал заявок") = Worksheets("Журнал заявок")
    
    'Двигаем по первому листу по столбцу "A".
   For i = lStartSheet_("Заявка МТ-1 для печати") To lEndSheet_("Заявка МТ-1 для печати") Step 1
        'Если в ячейке есть число "1".
        If shSheet_("Заявка МТ-1 для печати").Cells(i, "A").Value = 1 Then
            'Переносим данные на второй лист.
            shSheet_("Журнал заявок").Cells(lLastRow, "B").Value = shSheet_("Заявка МТ-1 для печати").Cells(i, "J").Value
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    
    Next i
    
[/vba]
Хотелось бы чтоб после того как данные скопировались сама заявка очищалась от данных и всплывало сообщение "Данные скопированы. Заявка очищена"
Помогите подскажите пожалуйста!!! Заранее спасибо.
К сообщению приложен файл: 4540260.xlsb (68.3 Kb)


Кто бы ты ни был, мир в твоих руках
 
Ответить
СообщениеДобрый день еще раз!!!
Оператор составляет заявку через UseForm и после того как заявка сформирована. Оператор нажимает кнопку "Скопировать данные в журнал заявок" и все данные копируются на лист в таблицу "Журнал заявок" (с каждым разом пополняя этими данными таблицу).
Я вроде бы нашел код который мне должен был помочь (((( но я или ошибся или же я не верно все отредактировал
[vba]
Код

Private Sub CommandButton4_Click()

    Dim shSheet_("Заявка МТ-1 для печати") As Excel.Worksheet, shSheet_("Журнал заявок") As Excel.Worksheet
    Dim lStartSheet_("Заявка МТ-1 для печати") As Long, lEndSheet_("Заявка МТ-1 для печати") As Long
    Dim lLastRow As Long
    Dim i As Long
       
    
    'Указываем, с какой по какую строку двигаться по первому листу
    'по столбцу "A".
    lStartSheet_("Заявка МТ-1 для печати") = 6
    lEndSheet_("Заявка МТ-1 для печати") = 20
    
    'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = 2
    
    'Даём листам имена "("Заявка МТ-1 для печати")" и "shSheet_("Журнал заявок")",
    'чтобы было удобнее писать код.
    Set shSheet_("Заявка МТ-1 для печати") = Worksheets("Заявка МТ-1 для печати")
    Set shSheet_("Журнал заявок") = Worksheets("Журнал заявок")
    
    'Двигаем по первому листу по столбцу "A".
   For i = lStartSheet_("Заявка МТ-1 для печати") To lEndSheet_("Заявка МТ-1 для печати") Step 1
        'Если в ячейке есть число "1".
        If shSheet_("Заявка МТ-1 для печати").Cells(i, "A").Value = 1 Then
            'Переносим данные на второй лист.
            shSheet_("Журнал заявок").Cells(lLastRow, "B").Value = shSheet_("Заявка МТ-1 для печати").Cells(i, "J").Value
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    
    Next i
    
[/vba]
Хотелось бы чтоб после того как данные скопировались сама заявка очищалась от данных и всплывало сообщение "Данные скопированы. Заявка очищена"
Помогите подскажите пожалуйста!!! Заранее спасибо.

Автор - lebensvoll
Дата добавления - 28.07.2016 в 13:12
Manyasha Дата: Четверг, 28.07.2016, 13:59 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Александр,
Dim shSheet_("Заявка МТ-1 для печати") As Excel.Worksheet
Dim lStartSheet_("Заявка МТ-1 для печати") As Long

кто же Вас такому научил??

Почитайте правила объявления переменных: https://msdn.microsoft.com/ru-ru/library/81ed9a62.aspx


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеАлександр,
Dim shSheet_("Заявка МТ-1 для печати") As Excel.Worksheet
Dim lStartSheet_("Заявка МТ-1 для печати") As Long

кто же Вас такому научил??

Почитайте правила объявления переменных: https://msdn.microsoft.com/ru-ru/library/81ed9a62.aspx

Автор - Manyasha
Дата добавления - 28.07.2016 в 13:59
lebensvoll Дата: Четверг, 28.07.2016, 13:59 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
Согласен с вами полностью!!!
Данный код который я разыскал не вхож под мои параметры (((( но можно ли осуществить данную задумку???


Кто бы ты ни был, мир в твоих руках
 
Ответить
СообщениеСогласен с вами полностью!!!
Данный код который я разыскал не вхож под мои параметры (((( но можно ли осуществить данную задумку???

Автор - lebensvoll
Дата добавления - 28.07.2016 в 13:59
lebensvoll Дата: Четверг, 28.07.2016, 14:35 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
Manyasha, я же писал (((( что данный код взял (через поиск, что нашел), хотел его под себя подправить как понял.
Но чем дальше я понимал (что ни черта не понимаю) еще больше наделал там такого что просто ОЧУМЕТЬ ((((


Кто бы ты ни был, мир в твоих руках
 
Ответить
СообщениеManyasha, я же писал (((( что данный код взял (через поиск, что нашел), хотел его под себя подправить как понял.
Но чем дальше я понимал (что ни черта не понимаю) еще больше наделал там такого что просто ОЧУМЕТЬ ((((

Автор - lebensvoll
Дата добавления - 28.07.2016 в 14:35
Udik Дата: Четверг, 28.07.2016, 14:52 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
сама заявка очищалась от данных и всплывало сообщение

так у Вас форма выгружается после добавления данных, а при новом вызове все очищено.
а для сообщения добавьте строку в конец процедуры Butt_ok_Click()
[vba]
Код

MsgBox "Данные скопированы. Заявка очищена", 64, "Добавление данных"
[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщение
сама заявка очищалась от данных и всплывало сообщение

так у Вас форма выгружается после добавления данных, а при новом вызове все очищено.
а для сообщения добавьте строку в конец процедуры Butt_ok_Click()
[vba]
Код

MsgBox "Данные скопированы. Заявка очищена", 64, "Добавление данных"
[/vba]

Автор - Udik
Дата добавления - 28.07.2016 в 14:52
sboy Дата: Четверг, 28.07.2016, 14:55 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
lebensvoll, Надо подгонять к рабочему файлу, но общее поправил
[vba]
Код

Private Sub CommandButton4_Click()

    Dim shSheetf As Worksheet
    Dim shSheett As Worksheet
   ' Dim lStartSheet_("Заявка МТ-1 для печати") As Long, lEndSheet_("Заявка МТ-1 для печати") As Long
    Dim lLastRow As Long
    Dim i As Long
    
    'Даём листам имена "("Заявка МТ-1 для печати")" и "shSheet_("Журнал заявок")",
    'чтобы было удобнее писать код.
    Set shSheetf = Worksheets("Заявка МТ-1 для печати")
    Set shSheett = Worksheets("Журнал заявок")
    
    lStartSheet = 6
    lEndSheet = shSheetf.Cells(Rows.Count, 1).End(xlUp).Row
    
    'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
    
    
    
    
    'Двигаем по первому листу по столбцу "A".
   For i = lStartSheet To lEndSheet
        If Not shSheetf.Cells(i, 2).Value = Empty Then
            'Перносим данные на второй лист.
            For x = 2 To 8
           shSheett.Cells(lLastRow, x + 2).Value = shSheetf.Cells(i, x).Value
           shSheetf.Cells(i, x).ClearContents
           Next x
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    
    Next i
    MsgBox "Данные перенесены"

End Sub
[/vba]


Яндекс: 410016850021169
 
Ответить
Сообщениеlebensvoll, Надо подгонять к рабочему файлу, но общее поправил
[vba]
Код

Private Sub CommandButton4_Click()

    Dim shSheetf As Worksheet
    Dim shSheett As Worksheet
   ' Dim lStartSheet_("Заявка МТ-1 для печати") As Long, lEndSheet_("Заявка МТ-1 для печати") As Long
    Dim lLastRow As Long
    Dim i As Long
    
    'Даём листам имена "("Заявка МТ-1 для печати")" и "shSheet_("Журнал заявок")",
    'чтобы было удобнее писать код.
    Set shSheetf = Worksheets("Заявка МТ-1 для печати")
    Set shSheett = Worksheets("Журнал заявок")
    
    lStartSheet = 6
    lEndSheet = shSheetf.Cells(Rows.Count, 1).End(xlUp).Row
    
    'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
    
    
    
    
    'Двигаем по первому листу по столбцу "A".
   For i = lStartSheet To lEndSheet
        If Not shSheetf.Cells(i, 2).Value = Empty Then
            'Перносим данные на второй лист.
            For x = 2 To 8
           shSheett.Cells(lLastRow, x + 2).Value = shSheetf.Cells(i, x).Value
           shSheetf.Cells(i, x).ClearContents
           Next x
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    
    Next i
    MsgBox "Данные перенесены"

End Sub
[/vba]

Автор - sboy
Дата добавления - 28.07.2016 в 14:55
lebensvoll Дата: Четверг, 28.07.2016, 15:53 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
Udik,
Цитата
так у Вас форма выгружается после добавления данных, а при новом вызове все очищено.

Я просто создал форму для того чтоб оператор с ее помощью смог заполнять саму заявку. После того как он заполнил ее (будет там 10-ть; 15-ть или же 20-ть позиций не важно) и как только он ее заполнил он нажимает кнопку "скопировать данные в журнал" и все эти позиции сохраняются в лист "Журнала заявок" а сама заявка очистилась. И готова будет для составления новой заявки (заявки на поставку инертных материалов составляется и подается раз в неделю или в ПН или ВТ).
Только прежде чем оператор нажмет кнопку "сохранить данные в в журнал" он должен будет ее распечатать (я правда нашел код для распечатывания и предварительного просмотра
[vba]
Код
Private Sub CommandButton2_Click() 'Код для печати заявки
ActiveWindow.Application.ActiveSheet.PrintPreview
ActiveWindow.Application.ActiveSheet.PrintOut From:=1, To:=1, Copies:=1
End Sub
[/vba]
а затем он должен будет сохранить ее в ПДФ я в принципе тож нашел данный код но пока что в нем еще не сильно разобрался (там нужно прописать куда его сохранять :-( )
[vba]
Код
Private Sub CommandButton3_Click() 'код для сохранения заявки в PDF
Sheets(Array("Заявка МТ-1 для печати")).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"N:\\morton\user\Группы\ДПром\Сохранить в пдф.pdf", Quality _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
[/vba]
Возможно я вновь не верно что то прописываю (когда переделываю) но пока не вникал в него...
И уж потом оператор только жмет кнопку "сохранить данные в журнал"
sboy, СПАСИБО ОГРОМНОЕ!!!
Ваш код сработал как нужно. Я сижу сравниваю ваш код со своим и понимаю что я был в очередной раз близок к истине ((((( но все же команды (как их еще назвать: процедуры, скорее всего из за не до понимания. творю чудовищные ошибки)
Хотелось уточнить лишь данный код сработает для всей записи по заявке (будет там не одна запись а предположим 10-ть или 15-ть)???
А также последующие данные (составленной заявки будут записываться ниже предыдущих или же как)???
[vba]
Код
lStartSheet = 6
[/vba]
Вот тут вот как я понял чтоб записывались данные в 6-ю строку листа "Журнала заявок". Я его изменил чтоб не в 6-ю а со 2-й начал.... Правильно!?


Кто бы ты ни был, мир в твоих руках
 
Ответить
СообщениеUdik,
Цитата
так у Вас форма выгружается после добавления данных, а при новом вызове все очищено.

Я просто создал форму для того чтоб оператор с ее помощью смог заполнять саму заявку. После того как он заполнил ее (будет там 10-ть; 15-ть или же 20-ть позиций не важно) и как только он ее заполнил он нажимает кнопку "скопировать данные в журнал" и все эти позиции сохраняются в лист "Журнала заявок" а сама заявка очистилась. И готова будет для составления новой заявки (заявки на поставку инертных материалов составляется и подается раз в неделю или в ПН или ВТ).
Только прежде чем оператор нажмет кнопку "сохранить данные в в журнал" он должен будет ее распечатать (я правда нашел код для распечатывания и предварительного просмотра
[vba]
Код
Private Sub CommandButton2_Click() 'Код для печати заявки
ActiveWindow.Application.ActiveSheet.PrintPreview
ActiveWindow.Application.ActiveSheet.PrintOut From:=1, To:=1, Copies:=1
End Sub
[/vba]
а затем он должен будет сохранить ее в ПДФ я в принципе тож нашел данный код но пока что в нем еще не сильно разобрался (там нужно прописать куда его сохранять :-( )
[vba]
Код
Private Sub CommandButton3_Click() 'код для сохранения заявки в PDF
Sheets(Array("Заявка МТ-1 для печати")).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"N:\\morton\user\Группы\ДПром\Сохранить в пдф.pdf", Quality _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
[/vba]
Возможно я вновь не верно что то прописываю (когда переделываю) но пока не вникал в него...
И уж потом оператор только жмет кнопку "сохранить данные в журнал"
sboy, СПАСИБО ОГРОМНОЕ!!!
Ваш код сработал как нужно. Я сижу сравниваю ваш код со своим и понимаю что я был в очередной раз близок к истине ((((( но все же команды (как их еще назвать: процедуры, скорее всего из за не до понимания. творю чудовищные ошибки)
Хотелось уточнить лишь данный код сработает для всей записи по заявке (будет там не одна запись а предположим 10-ть или 15-ть)???
А также последующие данные (составленной заявки будут записываться ниже предыдущих или же как)???
[vba]
Код
lStartSheet = 6
[/vba]
Вот тут вот как я понял чтоб записывались данные в 6-ю строку листа "Журнала заявок". Я его изменил чтоб не в 6-ю а со 2-й начал.... Правильно!?

Автор - lebensvoll
Дата добавления - 28.07.2016 в 15:53
sboy Дата: Четверг, 28.07.2016, 15:59 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Вот тут вот как я понял чтоб записывались данные в 6-ю строку листа "Журнала заявок". Я его изменил чтоб не в 6-ю а со 2-й начал.... Правильно!?

нет, 6 - это начальная строка Worksheets("Заявка МТ-1 для печати")
[vba]
Код
'Указываем, с какой строки начать вставлять данные на второй лист(Worksheets("Журнал заявок"))
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
[/vba]


Яндекс: 410016850021169
 
Ответить
Сообщение
Вот тут вот как я понял чтоб записывались данные в 6-ю строку листа "Журнала заявок". Я его изменил чтоб не в 6-ю а со 2-й начал.... Правильно!?

нет, 6 - это начальная строка Worksheets("Заявка МТ-1 для печати")
[vba]
Код
'Указываем, с какой строки начать вставлять данные на второй лист(Worksheets("Журнал заявок"))
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
[/vba]

Автор - sboy
Дата добавления - 28.07.2016 в 15:59
lebensvoll Дата: Четверг, 28.07.2016, 16:14 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
sboy, я понял когда еще раз посидел и сгруппировал данные что тут указывается таблица на листе "Заявка МТ-1" , простите что поспешил.
Но все же смотрите что получается. В файле я набросал примерный список предыдущей заявки и после того как вы нажмете кнопку "Сохранить данные в журнал"
все срабатывает (((( но с одной не точностью.
№ п/п почему то остается и не переносится ((((( также остается запись дата (((( скорее всего потому что макрос натыкается на пустые ячейки и он дату уже не цепляет (((( а хотелось чтоб дата также переносилась в таблицу ((((
Это для того что потом я начну делать таблицу для руководства ((((( где они решили отслеживать что они заказали что им привезли и по выбранному поставщику (ОДНИМ СЛОВОМ ПРИКИНУТЬ ПЛАН_ФАКТ) поставок и заявок....
КАК ЕЩЕ МНОГО то сделать нужно ((((( аааааааааааа
К сообщению приложен файл: _--3.xlsb (74.2 Kb)


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеsboy, я понял когда еще раз посидел и сгруппировал данные что тут указывается таблица на листе "Заявка МТ-1" , простите что поспешил.
Но все же смотрите что получается. В файле я набросал примерный список предыдущей заявки и после того как вы нажмете кнопку "Сохранить данные в журнал"
все срабатывает (((( но с одной не точностью.
№ п/п почему то остается и не переносится ((((( также остается запись дата (((( скорее всего потому что макрос натыкается на пустые ячейки и он дату уже не цепляет (((( а хотелось чтоб дата также переносилась в таблицу ((((
Это для того что потом я начну делать таблицу для руководства ((((( где они решили отслеживать что они заказали что им привезли и по выбранному поставщику (ОДНИМ СЛОВОМ ПРИКИНУТЬ ПЛАН_ФАКТ) поставок и заявок....
КАК ЕЩЕ МНОГО то сделать нужно ((((( аааааааааааа

Автор - lebensvoll
Дата добавления - 28.07.2016 в 16:14
Udik Дата: Четверг, 28.07.2016, 16:40 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
он нажимает кнопку "скопировать данные в журнал" и все эти позиции сохраняются в лист "Журнала заявок" а сама заявка очистилась.

тогда Вам нужно отключить строку с Unload и прописать очистку каждого контрола (в отдельной процедуре или в обработке кнопки)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщение
он нажимает кнопку "скопировать данные в журнал" и все эти позиции сохраняются в лист "Журнала заявок" а сама заявка очистилась.

тогда Вам нужно отключить строку с Unload и прописать очистку каждого контрола (в отдельной процедуре или в обработке кнопки)

Автор - Udik
Дата добавления - 28.07.2016 в 16:40
sboy Дата: Четверг, 28.07.2016, 16:45 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
lebensvoll, в таблице на листе "Заявка МТ-1" нет даты для каждой записи, поэтому я переносил данные начиная с Организации
 [vba]
Код
'Перносим данные на второй лист.
            For x = 2 To 8
'вот здесь мы берем данные с 2 по 8 столбец листа Заявка и переносим на  лист Журнал с 4 по 10 столбец
        shSheett.Cells(lLastRow, x + 2).Value = shSheetf.Cells(i, x).Value
        shSheetf.Cells(i, x).ClearContents
        Next x
[/vba]


Яндекс: 410016850021169

Сообщение отредактировал sboy - Четверг, 28.07.2016, 16:46
 
Ответить
Сообщениеlebensvoll, в таблице на листе "Заявка МТ-1" нет даты для каждой записи, поэтому я переносил данные начиная с Организации
 [vba]
Код
'Перносим данные на второй лист.
            For x = 2 To 8
'вот здесь мы берем данные с 2 по 8 столбец листа Заявка и переносим на  лист Журнал с 4 по 10 столбец
        shSheett.Cells(lLastRow, x + 2).Value = shSheetf.Cells(i, x).Value
        shSheetf.Cells(i, x).ClearContents
        Next x
[/vba]

Автор - sboy
Дата добавления - 28.07.2016 в 16:45
lebensvoll Дата: Четверг, 28.07.2016, 16:45 | Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
Udik, да не код от sboy, сработал на ура!!!
Лишь с несколькими не доработками
Цитата
№ п/п почему то остается и не переносится ((((( также остается запись дата (((( скорее всего потому что макрос натыкается на пустые ячейки и он дату уже не цепляет (((( а хотелось чтоб дата также переносилась в таблицу ((((


Кто бы ты ни был, мир в твоих руках
 
Ответить
СообщениеUdik, да не код от sboy, сработал на ура!!!
Лишь с несколькими не доработками
Цитата
№ п/п почему то остается и не переносится ((((( также остается запись дата (((( скорее всего потому что макрос натыкается на пустые ячейки и он дату уже не цепляет (((( а хотелось чтоб дата также переносилась в таблицу ((((

Автор - lebensvoll
Дата добавления - 28.07.2016 в 16:45
lebensvoll Дата: Четверг, 28.07.2016, 16:54 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
sboy, да я поменял
[vba]
Код
'Перносим данные на второй лист.
            For x = 2 To 17
        shSheett.Cells(lLastRow, x + 1).Value = shSheetf.Cells(i, x).Value 'вот здесь мы берем данные с 2 по 8 столбец листа Заявка и переносим на  лист Журнал с 4 по 10 столбец
        shSheetf.Cells(i, x).ClearContents
        Next x
[/vba]
Дата убежала hands на другой лист. А почему же тогда № п/п остался!?
И я так понял что он копирует как есть
[img][/img]
Но на нужный нам лист перенеслись данные также не корректно ((((


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеsboy, да я поменял
[vba]
Код
'Перносим данные на второй лист.
            For x = 2 To 17
        shSheett.Cells(lLastRow, x + 1).Value = shSheetf.Cells(i, x).Value 'вот здесь мы берем данные с 2 по 8 столбец листа Заявка и переносим на  лист Журнал с 4 по 10 столбец
        shSheetf.Cells(i, x).ClearContents
        Next x
[/vba]
Дата убежала hands на другой лист. А почему же тогда № п/п остался!?
И я так понял что он копирует как есть
[img][/img]
Но на нужный нам лист перенеслись данные также не корректно ((((

Автор - lebensvoll
Дата добавления - 28.07.2016 в 16:54
lebensvoll Дата: Четверг, 28.07.2016, 16:57 | Сообщение № 14
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
sboy, а где указано в коде что
Цитата
и переносим на лист Журнал с 4 по 10 столбец
не могу понять???


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеsboy, а где указано в коде что
Цитата
и переносим на лист Журнал с 4 по 10 столбец
не могу понять???

Автор - lebensvoll
Дата добавления - 28.07.2016 в 16:57
lebensvoll Дата: Четверг, 28.07.2016, 17:01 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
Сделал так вот
[vba]
Код
'Двигаем по первому листу по столбцу "A".
For i = lStartSheet To lEndSheet
        If Not shSheetf.Cells(i, 2).Value = Empty Then
            'Перносим данные на второй лист.
            For x = 1 To 17
        shSheett.Cells(lLastRow, x + 1).Value = shSheetf.Cells(i, x).Value
        shSheetf.Cells(i, x).ClearContents
        Next x
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    
[/vba]
и все отлично получилось )))) hands дата перенеслась и № п/п тоже но все одно на листе журнал заявок (((( не корректно ((((
[img][/img]


Кто бы ты ни был, мир в твоих руках
 
Ответить
СообщениеСделал так вот
[vba]
Код
'Двигаем по первому листу по столбцу "A".
For i = lStartSheet To lEndSheet
        If Not shSheetf.Cells(i, 2).Value = Empty Then
            'Перносим данные на второй лист.
            For x = 1 To 17
        shSheett.Cells(lLastRow, x + 1).Value = shSheetf.Cells(i, x).Value
        shSheetf.Cells(i, x).ClearContents
        Next x
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    
[/vba]
и все отлично получилось )))) hands дата перенеслась и № п/п тоже но все одно на листе журнал заявок (((( не корректно ((((
[img][/img]

Автор - lebensvoll
Дата добавления - 28.07.2016 в 17:01
sboy Дата: Четверг, 28.07.2016, 17:06 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
lebensvoll, Увидел где у Вас дата)))
[vba]
Код
Private Sub CommandButton4_Click()

    Dim shSheetf As Worksheet
    Dim shSheett As Worksheet
' Dim lStartSheet_("Заявка МТ-1 для печати") As Long, lEndSheet_("Заявка МТ-1 для печати") As Long
    Dim lLastRow As Long
    Dim i As Long
    
    'Даём листам имена "("Заявка МТ-1 для печати")" и "shSheet_("Журнал заявок")",
    'чтобы было удобнее писать код.
    Set shSheetf = Worksheets("Заявка МТ-1 для печати")
    Set shSheett = Worksheets("Журнал заявок")
    
    lStartSheet = 6
    lEndSheet = shSheetf.Cells(Rows.Count, 1).End(xlUp).Row
    
    'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
    
    
    
    
    'Двигаем по первому листу по столбцу "A".
For i = lStartSheet To lEndSheet
        If Not shSheetf.Cells(i, 2).Value = Empty Then
            'Перносим данные на второй лист.
            shSheett.Cells(lLastRow, 2).Value = shSheetf.Cells(i, 1).Value
            shSheett.Cells(lLastRow, 3).Value = shSheetf.Cells(i, 17).Value
            For x = 2 To 8
        shSheett.Cells(lLastRow, x + 2).Value = shSheetf.Cells(i, x).Value
        Next x
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    
    Next i
            Range(Cells(6, 1), Cells(lEndSheet, 17)).ClearContents

    MsgBox "Данные перенесены"

End Sub
[/vba]


Яндекс: 410016850021169
 
Ответить
Сообщениеlebensvoll, Увидел где у Вас дата)))
[vba]
Код
Private Sub CommandButton4_Click()

    Dim shSheetf As Worksheet
    Dim shSheett As Worksheet
' Dim lStartSheet_("Заявка МТ-1 для печати") As Long, lEndSheet_("Заявка МТ-1 для печати") As Long
    Dim lLastRow As Long
    Dim i As Long
    
    'Даём листам имена "("Заявка МТ-1 для печати")" и "shSheet_("Журнал заявок")",
    'чтобы было удобнее писать код.
    Set shSheetf = Worksheets("Заявка МТ-1 для печати")
    Set shSheett = Worksheets("Журнал заявок")
    
    lStartSheet = 6
    lEndSheet = shSheetf.Cells(Rows.Count, 1).End(xlUp).Row
    
    'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
    
    
    
    
    'Двигаем по первому листу по столбцу "A".
For i = lStartSheet To lEndSheet
        If Not shSheetf.Cells(i, 2).Value = Empty Then
            'Перносим данные на второй лист.
            shSheett.Cells(lLastRow, 2).Value = shSheetf.Cells(i, 1).Value
            shSheett.Cells(lLastRow, 3).Value = shSheetf.Cells(i, 17).Value
            For x = 2 To 8
        shSheett.Cells(lLastRow, x + 2).Value = shSheetf.Cells(i, x).Value
        Next x
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    
    Next i
            Range(Cells(6, 1), Cells(lEndSheet, 17)).ClearContents

    MsgBox "Данные перенесены"

End Sub
[/vba]

Автор - sboy
Дата добавления - 28.07.2016 в 17:06
lebensvoll Дата: Четверг, 28.07.2016, 17:30 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
sboy, hands hands hands
Вы просто ГЕНИЙ да все верно и прям на ура!!! Сейчас попробую куда он будет вносить данные если оператор будет формировать новую заявку. Отпишусь если что.
ВЫ УЖ МЕНЯ ПРОСТИТЕ ПОЖАЛУЙСТА если что не так, но я честно стараюсь вникнуть но очень сложно ((((.
И еще один вопрос а почему он на лист Журнала заявок вставляет также в 6-ю ячейку а не в первую (((( это потому что в коде у нас указана 6 но она ведь для листа Заявка МТ-1
[img][/img]


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеsboy, hands hands hands
Вы просто ГЕНИЙ да все верно и прям на ура!!! Сейчас попробую куда он будет вносить данные если оператор будет формировать новую заявку. Отпишусь если что.
ВЫ УЖ МЕНЯ ПРОСТИТЕ ПОЖАЛУЙСТА если что не так, но я честно стараюсь вникнуть но очень сложно ((((.
И еще один вопрос а почему он на лист Журнала заявок вставляет также в 6-ю ячейку а не в первую (((( это потому что в коде у нас указана 6 но она ведь для листа Заявка МТ-1
[img][/img]

Автор - lebensvoll
Дата добавления - 28.07.2016 в 17:30
sboy Дата: Четверг, 28.07.2016, 17:34 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
а почему он на лист Журнала заявок вставляет также в 6-ю ячейку а не в первую

[vba]
Код
'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
[/vba]

Эксель ищет последнюю заполненную строку. В данном случае это 5-я, предыдущие заполнены (заливкой)


Яндекс: 410016850021169
 
Ответить
Сообщение
а почему он на лист Журнала заявок вставляет также в 6-ю ячейку а не в первую

[vba]
Код
'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
[/vba]

Эксель ищет последнюю заполненную строку. В данном случае это 5-я, предыдущие заполнены (заливкой)

Автор - sboy
Дата добавления - 28.07.2016 в 17:34
lebensvoll Дата: Четверг, 28.07.2016, 17:49 | Сообщение № 19
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
sboy, понял нужно тогда убрать заливки :o блин как это все сложно просто ЖЕСТЬ как вы столько в голове держите....
На этом форуме походу в шахматы лучше не садиться играть ))))) как и в карты....
Спасибо еще раз за ваше терпение, наставления, понимание, отзывчивость и ПОМОЩЬ!!!
А также всем кто принимал участие


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеsboy, понял нужно тогда убрать заливки :o блин как это все сложно просто ЖЕСТЬ как вы столько в голове держите....
На этом форуме походу в шахматы лучше не садиться играть ))))) как и в карты....
Спасибо еще раз за ваше терпение, наставления, понимание, отзывчивость и ПОМОЩЬ!!!
А также всем кто принимал участие

Автор - lebensvoll
Дата добавления - 28.07.2016 в 17:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скопировать данные с одной таблицы в другую таблицу (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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