Добрый день! Помогите пожалуйста, приходится переводить однотипные инвойсы, изменяются только цифры, кол-во, контейнер(название), цена, и т.п., выделено на листе3, как можно сделать так чтоб при создании нового листа, данные введённые на Листе1 отражались на следующем листе(инвойсе, т.е. строка на Листе1, это и есть данные нового инвойса, помогите пож-ста!
Добрый день! Помогите пожалуйста, приходится переводить однотипные инвойсы, изменяются только цифры, кол-во, контейнер(название), цена, и т.п., выделено на листе3, как можно сделать так чтоб при создании нового листа, данные введённые на Листе1 отражались на следующем листе(инвойсе, т.е. строка на Листе1, это и есть данные нового инвойса, помогите пож-ста!Nargiz
Вариант макросом. Конечно в коде не все учтено, только то, что было в примере. Макросы должны быть разрешены (настройка безопасности Эксель) Выделит ячейку с инвойсом, запустить макрос. Если листа с таким инвойсом нет, то будет создан лист с заполненным бланком
Вариант макросом. Конечно в коде не все учтено, только то, что было в примере. Макросы должны быть разрешены (настройка безопасности Эксель) Выделит ячейку с инвойсом, запустить макрос. Если листа с таким инвойсом нет, то будет создан лист с заполненным бланкомAlexM
AlexM спасибо! а вы бы не могли написать подробнее какую ячейку? и как запустить макрос, никогда в жизни с этим не сталкивалась, либо отметить в файле цветным чем нибудь
AlexM спасибо! а вы бы не могли написать подробнее какую ячейку? и как запустить макрос, никогда в жизни с этим не сталкивалась, либо отметить в файле цветным чем нибудь Nargiz
Кликнуть по А2 ячейка становится в черной рамке. Это значит ячейка активная Alt+F8 откроется окно макросов. Выбрать макрос с именем "Макрос" и нажать кнопку Выполнить. Если выполнение макросов разрешено, то будет создан лист инвойса.
Кликнуть по А2 ячейка становится в черной рамке. Это значит ячейка активная Alt+F8 откроется окно макросов. Выбрать макрос с именем "Макрос" и нажать кнопку Выполнить. Если выполнение макросов разрешено, то будет создан лист инвойса.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Скажите пожалуйста какую бы книжку почитать чайнику по макросам, и вообще по Экселю, но чтоб доступным языком было написано, да это стоящая вещь, макросы))))
Скажите пожалуйста какую бы книжку почитать чайнику по макросам, и вообще по Экселю, но чтоб доступным языком было написано, да это стоящая вещь, макросы))))Nargiz
Рекомендую зайти в БИБЛИОТЕКУ и подобрать себе книгу по VBA Сейчас могу прокомментировать строки кода
[vba]
Код
Sub Macros() 'Заголовок макроса Application.ScreenUpdating = False 'Отключение обновления экрана. Так макрос быстрее работает и не дергается экран. Dim objSheet As Worksheet, inv As String 'Описание переменных Set ws = Sheets("Инвойсы"): Set AC = ActiveCell 'Свойствам присваиваем значения inv = AC 'переменной присваиваем значение. В переменной inv будет номер инвойса из активной ячейки For Each objSheet In ThisWorkbook.Sheets 'Три строки - это цикл по всем листам в поисках листа с именем как номер инвойса If objSheet.Name = inv Then Exit Sub Next Sheets("Бланк").Copy After:=Sheets(Sheets.Count) 'Копирует лист "Бланк" в конец книги Sheets(Sheets.Count).Name = inv 'Присваивает имя новому листу имя как номер инвойса Sheets("Инвойсы").Select 'Лист "Инвойсы делаем активным With Sheets(inv) 'Конструкция With - End With облегчает работу с объектами, в данном случае объект лист с именем как номер инвойса .Range("H5") = AC 'Строки ниже заполняют лист инвойса .Range("H6") = AC(1, 2) .Range("A16") = AC(1, 3) .Range("B16") = AC(1, 4) .Range("C16") = AC(1, 5) .Range("D16") = AC(1, 6) .Range("E16") = AC(1, 7) .Range("F16") = AC(1, 8) .Range("G16") = AC(1, 9) .Range("H16") = AC(1, 8) * AC(1, 9) / 10 'Расчет суммы .Range("B20") = AC(1, 10) .Range("B22") = AC(1, 11) .Range("D13") = AC(1, 12) End With 'Конец конструкции With - End With Application.ScreenUpdating = True 'Включение обновления экрана. End Sub
[/vba]
Рекомендую зайти в БИБЛИОТЕКУ и подобрать себе книгу по VBA Сейчас могу прокомментировать строки кода
[vba]
Код
Sub Macros() 'Заголовок макроса Application.ScreenUpdating = False 'Отключение обновления экрана. Так макрос быстрее работает и не дергается экран. Dim objSheet As Worksheet, inv As String 'Описание переменных Set ws = Sheets("Инвойсы"): Set AC = ActiveCell 'Свойствам присваиваем значения inv = AC 'переменной присваиваем значение. В переменной inv будет номер инвойса из активной ячейки For Each objSheet In ThisWorkbook.Sheets 'Три строки - это цикл по всем листам в поисках листа с именем как номер инвойса If objSheet.Name = inv Then Exit Sub Next Sheets("Бланк").Copy After:=Sheets(Sheets.Count) 'Копирует лист "Бланк" в конец книги Sheets(Sheets.Count).Name = inv 'Присваивает имя новому листу имя как номер инвойса Sheets("Инвойсы").Select 'Лист "Инвойсы делаем активным With Sheets(inv) 'Конструкция With - End With облегчает работу с объектами, в данном случае объект лист с именем как номер инвойса .Range("H5") = AC 'Строки ниже заполняют лист инвойса .Range("H6") = AC(1, 2) .Range("A16") = AC(1, 3) .Range("B16") = AC(1, 4) .Range("C16") = AC(1, 5) .Range("D16") = AC(1, 6) .Range("E16") = AC(1, 7) .Range("F16") = AC(1, 8) .Range("G16") = AC(1, 9) .Range("H16") = AC(1, 8) * AC(1, 9) / 10 'Расчет суммы .Range("B20") = AC(1, 10) .Range("B22") = AC(1, 11) .Range("D13") = AC(1, 12) End With 'Конец конструкции With - End With Application.ScreenUpdating = True 'Включение обновления экрана. End Sub
Спасибо за комментарий!!!Забыла ещё кое что вставить, там у меня на первом листе ещё будет меняться таможенный код, вот как в зависимости от номера, чтоб прописывался текст, более детально в файле, спасибо заранее!
Модератор-файл удалён
Спасибо за комментарий!!!Забыла ещё кое что вставить, там у меня на первом листе ещё будет меняться таможенный код, вот как в зависимости от номера, чтоб прописывался текст, более детально в файле, спасибо заранее!
Select Case AC(1, 11) Case 2401207000#: .Range("A13") = "Тёмный табак теневой сушки" Case 2401208500#: .Range("A13") = "Табак тепловой сушки" Case 2401203500#: .Range("A13") = "Светлый табак теневой сушки" Case 2401106000#: .Range("A13") = "Табак типа Ориенталь, солнечной сушки" Case 2401300000#: .Range("A13") = "Табачные отходы (срезы табачной жилки)" End Select End With
[/vba]
В код макроса добавил [vba]
Код
Select Case AC(1, 11) Case 2401207000#: .Range("A13") = "Тёмный табак теневой сушки" Case 2401208500#: .Range("A13") = "Табак тепловой сушки" Case 2401203500#: .Range("A13") = "Светлый табак теневой сушки" Case 2401106000#: .Range("A13") = "Табак типа Ориенталь, солнечной сушки" Case 2401300000#: .Range("A13") = "Табачные отходы (срезы табачной жилки)" End Select End With
Alex добрый день! подскажите ещё пожалуйста, вот если брать по первым четырём кодам, то в инвойсе в ячейке должно быть такое действие умножение 0,594*Active Cell (1 , 8), а если будет пятый код то должно быть 0,644*Active Cell (1 , 8), попробовала сама что тто наваять чёт не получается исправьте где нужно, спасибо : ))
Sub Macros() Application.ScreenUpdating = False Dim objSheet As Worksheet, inv As String Set ws = Sheets("Èíâîéñû"): Set AC = ActiveCell inv = AC For Each objSheet In ThisWorkbook.Sheets If objSheet.Name = inv Then Exit Sub Next Sheets("Áëàíê").Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = inv Sheets("Èíâîéñû").Select With Sheets(inv) .Range("H5") = AC .Range("H6") = AC(1, 2) .Range("A16") = AC(1, 3) .Range("B16") = AC(1, 4) .Range("C16") = AC(1, 5) .Range("D16") = AC(1, 6) .Range("E16") = AC(1, 7) .Range("F16") = AC(1, 8) .Range("G16") = AC(1, 9) .Range("H16") = AC(1, 8) * AC(1, 9) / 10 .Range("B20") = AC(1, 10) .Range("B22") = AC(1, 11) .Range("D13") = AC(1, 12) Select Case AC(1, 11) Case 2401207000#: .Range("A13") = "Ò¸ìíûé òàáàê òåíåâîé ñóøêè" Case 2401208500#: .Range("A13") = "Òàáàê òåïëîâîé ñóøêè" Case 2401203500#: .Range("A13") = "Ñâåòëûé òàáàê òåíåâîé ñóøêè" Case 2401106000#: .Range("A13") = "Òàáàê òèïà Îðèåíòàëü, ñîëíå÷íîé ñóøêè" Case 2401300000#: .Range("A13") = "Òàáà÷íûå îòõîäû (ñðåçû òàáà÷íîé æèëêè)" Select Case AC(1, 11) Case 2401207000#: .Range("H17") = AC(1, 8) * 0.594 Case 2401208500#: .Range("H17") = AC(1, 8) * 0.594 Case 2401203500#: .Range("H17") = AC(1, 8) * 0.594 Case 2401106000#: .Range("H17") = AC(1, 8) * 0.594 Case 2401300000#: .Range("H17") = AC(1, 8) * 0.644 End Select End With Application.ScreenUpdating = True End Sub
[admin]Оформляйте код специальными тегами (длинный код - в спойлер)
Alex добрый день! подскажите ещё пожалуйста, вот если брать по первым четырём кодам, то в инвойсе в ячейке должно быть такое действие умножение 0,594*Active Cell (1 , 8), а если будет пятый код то должно быть 0,644*Active Cell (1 , 8), попробовала сама что тто наваять чёт не получается исправьте где нужно, спасибо : ))
Sub Macros() Application.ScreenUpdating = False Dim objSheet As Worksheet, inv As String Set ws = Sheets("Èíâîéñû"): Set AC = ActiveCell inv = AC For Each objSheet In ThisWorkbook.Sheets If objSheet.Name = inv Then Exit Sub Next Sheets("Áëàíê").Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = inv Sheets("Èíâîéñû").Select With Sheets(inv) .Range("H5") = AC .Range("H6") = AC(1, 2) .Range("A16") = AC(1, 3) .Range("B16") = AC(1, 4) .Range("C16") = AC(1, 5) .Range("D16") = AC(1, 6) .Range("E16") = AC(1, 7) .Range("F16") = AC(1, 8) .Range("G16") = AC(1, 9) .Range("H16") = AC(1, 8) * AC(1, 9) / 10 .Range("B20") = AC(1, 10) .Range("B22") = AC(1, 11) .Range("D13") = AC(1, 12) Select Case AC(1, 11) Case 2401207000#: .Range("A13") = "Ò¸ìíûé òàáàê òåíåâîé ñóøêè" Case 2401208500#: .Range("A13") = "Òàáàê òåïëîâîé ñóøêè" Case 2401203500#: .Range("A13") = "Ñâåòëûé òàáàê òåíåâîé ñóøêè" Case 2401106000#: .Range("A13") = "Òàáàê òèïà Îðèåíòàëü, ñîëíå÷íîé ñóøêè" Case 2401300000#: .Range("A13") = "Òàáà÷íûå îòõîäû (ñðåçû òàáà÷íîé æèëêè)" Select Case AC(1, 11) Case 2401207000#: .Range("H17") = AC(1, 8) * 0.594 Case 2401208500#: .Range("H17") = AC(1, 8) * 0.594 Case 2401203500#: .Range("H17") = AC(1, 8) * 0.594 Case 2401106000#: .Range("H17") = AC(1, 8) * 0.594 Case 2401300000#: .Range("H17") = AC(1, 8) * 0.644 End Select End With Application.ScreenUpdating = True End Sub
[admin]Оформляйте код специальными тегами (длинный код - в спойлер)Nargiz