Прошу помощи в написании макроса. Задача: при запуске макроса на листе "Новое Кп", сохранять данные в таблице на втором листе, затем сохранять созданное Кп на новом листе с названием "номер кп"
Рекордером макрос создать не удалось
по логике затем я формирую новое кп на первом листе, запускаю макрос и у меня добавляется новая строка в таблице и ещё один лист в книге. ну и всё по кругу.
Заранее спасибо
Очень похожая задача. Но тут так и нет решения.
Прошу помощи в написании макроса. Задача: при запуске макроса на листе "Новое Кп", сохранять данные в таблице на втором листе, затем сохранять созданное Кп на новом листе с названием "номер кп"
Рекордером макрос создать не удалось
по логике затем я формирую новое кп на первом листе, запускаю макрос и у меня добавляется новая строка в таблице и ещё один лист в книге. ну и всё по кругу.
Задача совсем не похожая, поэтому лучше будет создать новую тему. Зачем каждый раз добавлять новый лист? Пусть это будет один лист с КП и еще лист - своего рода база КП. На первом листе выбираем покупателя из списка и получаем из базы КП, относящееся к этому пок-лю. Как-то так.
Задача совсем не похожая, поэтому лучше будет создать новую тему. Зачем каждый раз добавлять новый лист? Пусть это будет один лист с КП и еще лист - своего рода база КП. На первом листе выбираем покупателя из списка и получаем из базы КП, относящееся к этому пок-лю. Как-то так.nilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Среда, 03.07.2013, 11:04
Ещё раз спасибо. Репутацию не даёт второй раз в сутки повысить.
Теперь буду задавать доп вопросы. тк операторы ещё мне не знакомые.
Как я понимаю первая часть это создание словаря (присвоение ячейкам имён) для того чтобы заполнить таблицу. Вопрос: не сместится ли у меня всё если я начну добавлять строки ли столбцы в форму (она приблизительная)? пока писал -экспериментировал. разобрался. если и сместится - буду корректировать смещение Offset (х, х).
А возможно ли ещё в таблице создавать гиперссылку на соответствующий созданный лист?
ЗЫ спаибо модерам за отдельную тему.
Ещё раз спасибо. Репутацию не даёт второй раз в сутки повысить.
Теперь буду задавать доп вопросы. тк операторы ещё мне не знакомые.
Как я понимаю первая часть это создание словаря (присвоение ячейкам имён) для того чтобы заполнить таблицу. Вопрос: не сместится ли у меня всё если я начну добавлять строки ли столбцы в форму (она приблизительная)? пока писал -экспериментировал. разобрался. если и сместится - буду корректировать смещение Offset (х, х).
А возможно ли ещё в таблице создавать гиперссылку на соответствующий созданный лист?
Уверен, что есть вариант легче, короче и универсальней. Но я его не знаю. ДОбавил гиперссылку.
[vba]
Код
Sub copy() Application.ScreenUpdating = False
Dim rCell As Range, rRange As Range, rTable As Long, name As String With CreateObject("Scripting.Dictionary") Set rRange = Sheets("новое кп").UsedRange For Each rCell In rRange If rCell.Value = "Дата:" Then .Add Key:="дата", Item:=rCell.Offset(0, 1).Value End If
If rCell.Value = "Номер:" Then .Add Key:="Номер", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "Наименование Оборудования" Then ' тут задайте свои параметры, так как я не совсем понял, .Add Key:="Наименование Оборудования", Item:=rCell.Value ' что именно нужно копировать End If If rCell.Value = "ИТОГО С НДС:" Then .Add Key:="Итого", Item:=rCell.Offset(0, 2).Value End If If rCell.Value = "Коммерческое предложение для" Then .Add Key:="Покупатель", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "для:" Then .Add Key:="Пользователь", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "г. " Then .Add Key:="Город", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "контактное лицо:" Then .Add Key:="Контакт", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "тел:" Then .Add Key:="Телефон", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "Дата:" Then .Add Key:="Дата", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "e-mail: " Then .Add Key:="E-mail", Item:=rCell.Offset(0, 1).Value End If Next
For i = 1 To Sheets.Count If Sheets(i).name = .Item("Номер") Then MsgBox "Такой номер КП уже сохраняли": Exit Sub End If Next rTable = Sheets("таблица").UsedRange.Rows.Count + 1
Уверен, что есть вариант легче, короче и универсальней. Но я его не знаю. ДОбавил гиперссылку.
[vba]
Код
Sub copy() Application.ScreenUpdating = False
Dim rCell As Range, rRange As Range, rTable As Long, name As String With CreateObject("Scripting.Dictionary") Set rRange = Sheets("новое кп").UsedRange For Each rCell In rRange If rCell.Value = "Дата:" Then .Add Key:="дата", Item:=rCell.Offset(0, 1).Value End If
If rCell.Value = "Номер:" Then .Add Key:="Номер", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "Наименование Оборудования" Then ' тут задайте свои параметры, так как я не совсем понял, .Add Key:="Наименование Оборудования", Item:=rCell.Value ' что именно нужно копировать End If If rCell.Value = "ИТОГО С НДС:" Then .Add Key:="Итого", Item:=rCell.Offset(0, 2).Value End If If rCell.Value = "Коммерческое предложение для" Then .Add Key:="Покупатель", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "для:" Then .Add Key:="Пользователь", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "г. " Then .Add Key:="Город", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "контактное лицо:" Then .Add Key:="Контакт", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "тел:" Then .Add Key:="Телефон", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "Дата:" Then .Add Key:="Дата", Item:=rCell.Offset(0, 1).Value End If If rCell.Value = "e-mail: " Then .Add Key:="E-mail", Item:=rCell.Offset(0, 1).Value End If Next
For i = 1 To Sheets.Count If Sheets(i).name = .Item("Номер") Then MsgBox "Такой номер КП уже сохраняли": Exit Sub End If Next rTable = Sheets("таблица").UsedRange.Rows.Count + 1