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

Вход

Регистрация

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

 

= Мир MS Excel/Автозаполнение актов скрытых работ на разных листах. - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автозаполнение актов скрытых работ на разных листах. (Макросы/Sub)
Автозаполнение актов скрытых работ на разных листах.
Webbear Дата: Среда, 28.09.2016, 12:09 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Давеча уважаемые devilkurs и MBT помогли очень просто решить вопрос с созданием
реестра по данным из ячеек на разных листах Тут .
Сегодня захотелось большего :D ))): Столкнулся с вопросом, как по заполненной таблице исходных данных
заполнить акт скрытых работ определенной формы.
Имеем книгу в которой:
1. 1-й лист - "Реестр"
2. 2-й лист - Исходные данные
3. 3-й и далее Формы актов.
Необходимо при запуске макроса:
1. Заполнить необходимые ячейки на листе №3 данными из шапки Исходных данных - постоянные для всех актов в данной книге
и переменными данными из первой строки основных сведений о предъявляемых работах.
2. При заполнении 2-ой и т.д. строки - создать новую копию листа №3 и заполнить ее соотв. данными и т.д.
Пример в приложении. Форма акта где требуется автоматическое заполнение выделена зеленым и заполнена через формулы так как хотелось-бы.
Заодно есть проблема с переносом предложения в другую ячейку. Не могу понять в чем проблема, на примере понятно. При значении менее 30 символов работает, а более вылетает в #знач
Помогите, кто может. Сам в макросах из разряда потыкать, а вдруг получится. :D
К сообщению приложен файл: __.xlsm (75.3 Kb)


Сообщение отредактировал Webbear - Среда, 28.09.2016, 14:33
 
Ответить
СообщениеДавеча уважаемые devilkurs и MBT помогли очень просто решить вопрос с созданием
реестра по данным из ячеек на разных листах Тут .
Сегодня захотелось большего :D ))): Столкнулся с вопросом, как по заполненной таблице исходных данных
заполнить акт скрытых работ определенной формы.
Имеем книгу в которой:
1. 1-й лист - "Реестр"
2. 2-й лист - Исходные данные
3. 3-й и далее Формы актов.
Необходимо при запуске макроса:
1. Заполнить необходимые ячейки на листе №3 данными из шапки Исходных данных - постоянные для всех актов в данной книге
и переменными данными из первой строки основных сведений о предъявляемых работах.
2. При заполнении 2-ой и т.д. строки - создать новую копию листа №3 и заполнить ее соотв. данными и т.д.
Пример в приложении. Форма акта где требуется автоматическое заполнение выделена зеленым и заполнена через формулы так как хотелось-бы.
Заодно есть проблема с переносом предложения в другую ячейку. Не могу понять в чем проблема, на примере понятно. При значении менее 30 символов работает, а более вылетает в #знач
Помогите, кто может. Сам в макросах из разряда потыкать, а вдруг получится. :D

Автор - Webbear
Дата добавления - 28.09.2016 в 12:09
devilkurs Дата: Среда, 28.09.2016, 16:35 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Webbear, Кнопка "Заполнить" на листа Основные параметры
К сообщению приложен файл: _1111.xlsm (78.2 Kb)




Сообщение отредактировал devilkurs - Среда, 28.09.2016, 16:35
 
Ответить
СообщениеWebbear, Кнопка "Заполнить" на листа Основные параметры

Автор - devilkurs
Дата добавления - 28.09.2016 в 16:35
Webbear Дата: Среда, 28.09.2016, 17:06 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
devilkurs, Очередной раз огромное спасибо, Вроде все работает как надо, с мелочами хочу попробовать разобраться сам.
Чтобы оттолкнуться от чего-то, есть несколько вопросов:
1. Лист Шаблон используется как форма в которой указаны все условно постоянные данные?
2. Например в строке кода
[vba]
Код
Temp = Строка(ПредЗастр, 40, 1000)
.[O53] = Temp(1): .[A54] = Temp(2)
[/vba]
как реализована последовательность сбора Фамилия - Должность и как эта последовательность меняется?
3.При создании реестра как правильно добавить дополнительные листы в исключение в строке
[vba]
Код
If Sh.Name <> "Реестр" Then
[/vba]?
[vba]
Код
If Sh.Name <> "Реестр" And "Основные параметры" And "ШАБЛОН" Then
[/vba] сработает?


Сообщение отредактировал Webbear - Среда, 28.09.2016, 17:33
 
Ответить
Сообщениеdevilkurs, Очередной раз огромное спасибо, Вроде все работает как надо, с мелочами хочу попробовать разобраться сам.
Чтобы оттолкнуться от чего-то, есть несколько вопросов:
1. Лист Шаблон используется как форма в которой указаны все условно постоянные данные?
2. Например в строке кода
[vba]
Код
Temp = Строка(ПредЗастр, 40, 1000)
.[O53] = Temp(1): .[A54] = Temp(2)
[/vba]
как реализована последовательность сбора Фамилия - Должность и как эта последовательность меняется?
3.При создании реестра как правильно добавить дополнительные листы в исключение в строке
[vba]
Код
If Sh.Name <> "Реестр" Then
[/vba]?
[vba]
Код
If Sh.Name <> "Реестр" And "Основные параметры" And "ШАБЛОН" Then
[/vba] сработает?

Автор - Webbear
Дата добавления - 28.09.2016 в 17:06
devilkurs Дата: Среда, 28.09.2016, 17:24 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Webbear,
1. Лист Шаблон используется как форма в которой указаны все условно постоянные данные?

С листа Шаблон создаются копии листов, которые переименовываются и заполняются данными из Основные параметры

как эта последовательность меняется

Ах, забыл поменять. В строке
[vba]
Код
        ПредСтроит = .[A4].Value & " - " & .[J4].Value
[/vba]
Поменяйте местами [A4] и [J4]

добавить дополнительные листы в исключение

[vba]
Код
If Sh.Name <> "Реестр" and Sh.Name <> "Основные параметры" and Sh.Name <> "ШАБЛОН" Then
[/vba]


 
Ответить
СообщениеWebbear,
1. Лист Шаблон используется как форма в которой указаны все условно постоянные данные?

С листа Шаблон создаются копии листов, которые переименовываются и заполняются данными из Основные параметры

как эта последовательность меняется

Ах, забыл поменять. В строке
[vba]
Код
        ПредСтроит = .[A4].Value & " - " & .[J4].Value
[/vba]
Поменяйте местами [A4] и [J4]

добавить дополнительные листы в исключение

[vba]
Код
If Sh.Name <> "Реестр" and Sh.Name <> "Основные параметры" and Sh.Name <> "ШАБЛОН" Then
[/vba]

Автор - devilkurs
Дата добавления - 28.09.2016 в 17:24
devilkurs Дата: Среда, 28.09.2016, 17:26 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Webbear,
Пользуйтесь теками при формировании сообщения. Правила форума.
Кнопка решетка и в середину код из ВБА.


 
Ответить
СообщениеWebbear,
Пользуйтесь теками при формировании сообщения. Правила форума.
Кнопка решетка и в середину код из ВБА.

Автор - devilkurs
Дата добавления - 28.09.2016 в 17:26
Webbear Дата: Среда, 28.09.2016, 17:27 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
devilkurs, СПАСИБО!
 
Ответить
Сообщение devilkurs, СПАСИБО!

Автор - Webbear
Дата добавления - 28.09.2016 в 17:27
devilkurs Дата: Среда, 28.09.2016, 17:35 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Webbear,
[vba]
Код
Temp = Строка(ПредЗастр, 40, 1000)
.[O53] = Temp(1): .[A54] = Temp(2)
[/vba]
Это работает следующим образом:
В Temp сохраняется массив из 3-х строк, которые формируются в Функции Строка. Входные данные в функцию
-Текст который надо разбить на подстроки
- размер/длина первой строки
- размер/длина второй строки

В Функции Текст разбивается на куски, которые "помещаются" в ячейки в Акте.
В данном выше примере в ячейку О53 вставляется текст длиной до 40 символов, а остальной текст вставляется в ячейку А54




Сообщение отредактировал devilkurs - Среда, 28.09.2016, 17:35
 
Ответить
СообщениеWebbear,
[vba]
Код
Temp = Строка(ПредЗастр, 40, 1000)
.[O53] = Temp(1): .[A54] = Temp(2)
[/vba]
Это работает следующим образом:
В Temp сохраняется массив из 3-х строк, которые формируются в Функции Строка. Входные данные в функцию
-Текст который надо разбить на подстроки
- размер/длина первой строки
- размер/длина второй строки

В Функции Текст разбивается на куски, которые "помещаются" в ячейки в Акте.
В данном выше примере в ячейку О53 вставляется текст длиной до 40 символов, а остальной текст вставляется в ячейку А54

Автор - devilkurs
Дата добавления - 28.09.2016 в 17:35
Webbear Дата: Среда, 28.09.2016, 17:38 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
И последнее :D Как дополнить код, что-бы уже заполненные акты не дублировались при повторном нажатии кнопки "Заполнить"
 
Ответить
СообщениеИ последнее :D Как дополнить код, что-бы уже заполненные акты не дублировались при повторном нажатии кнопки "Заполнить"

Автор - Webbear
Дата добавления - 28.09.2016 в 17:38
Webbear Дата: Среда, 28.09.2016, 17:41 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
devilkurs, а если строк в которых надо разбить текст будет 3 или более?
 
Ответить
Сообщение devilkurs, а если строк в которых надо разбить текст будет 3 или более?

Автор - Webbear
Дата добавления - 28.09.2016 в 17:41
devilkurs Дата: Среда, 28.09.2016, 17:58 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Как дополнить код, что-бы уже заполненные акты не дублировались

Файл приложил. Проверка идет по номеру акта

а если строк в которых надо разбить текст будет 3 или более?

Там где у Вас предусмотрено на 2 строки, то будет текст обрезать чтоб вместилось в первую строку, а остальной текст вставлять во вторую.
Там где у Вас предусмотрено на 3 строки, то будет вмещать в первые две, а третью вставлять весь остаток
К сообщению приложен файл: 8867492.xlsm (77.8 Kb)




Сообщение отредактировал devilkurs - Среда, 28.09.2016, 17:58
 
Ответить
Сообщение
Как дополнить код, что-бы уже заполненные акты не дублировались

Файл приложил. Проверка идет по номеру акта

а если строк в которых надо разбить текст будет 3 или более?

Там где у Вас предусмотрено на 2 строки, то будет текст обрезать чтоб вместилось в первую строку, а остальной текст вставлять во вторую.
Там где у Вас предусмотрено на 3 строки, то будет вмещать в первые две, а третью вставлять весь остаток

Автор - devilkurs
Дата добавления - 28.09.2016 в 17:58
Webbear Дата: Среда, 28.09.2016, 18:12 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Ну теперь точно все, буду изучать код.
Итоговый файл во вложении
К сообщению приложен файл: FinalEdit.xlsm (77.0 Kb)
 
Ответить
СообщениеНу теперь точно все, буду изучать код.
Итоговый файл во вложении

Автор - Webbear
Дата добавления - 28.09.2016 в 18:12
Webbear Дата: Среда, 28.09.2016, 18:41 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Совершенство не знает предела :D
Допустим, что работа актированная актом №2 оказалась не такой уж и скрытой, как казалось на первый взгляд.
Удаляем ее из Основных данных. Как реализовать удаление и созданного акта при повторном нажатии кнопки "Заполнить"?
 
Ответить
СообщениеСовершенство не знает предела :D
Допустим, что работа актированная актом №2 оказалась не такой уж и скрытой, как казалось на первый взгляд.
Удаляем ее из Основных данных. Как реализовать удаление и созданного акта при повторном нажатии кнопки "Заполнить"?

Автор - Webbear
Дата добавления - 28.09.2016 в 18:41
Webbear Дата: Четверг, 29.09.2016, 06:22 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Если я правильно понимаю, самый простой способ, это после каждого нового события нажатия кнопки "Заполнить" первым делом должны удалиться все существующие листы, а потом уже создаться заново по обновленным данным. Или есть еще более простой способ?

И еще,чуть не забыл: Месяц выполнения и окончания работ всегда январь!
[vba]
Код
.[K101] = Day(ArrАкты(i, 8))
                .[N101] = Format(Month(ArrАкты(i, 8)), "mmmm")
                .[S101] = Year(ArrАкты(i, 8))
                
                .[K102] = Day(ArrАкты(i, 9))
                .[N102] = Format(Month(ArrАкты(i, 9)), "mmmm")
                .[S102] = Year(ArrАкты(i, 9))
[/vba]
где-то здесь ошибка кроется?


Сообщение отредактировал Webbear - Четверг, 29.09.2016, 07:30
 
Ответить
СообщениеЕсли я правильно понимаю, самый простой способ, это после каждого нового события нажатия кнопки "Заполнить" первым делом должны удалиться все существующие листы, а потом уже создаться заново по обновленным данным. Или есть еще более простой способ?

И еще,чуть не забыл: Месяц выполнения и окончания работ всегда январь!
[vba]
Код
.[K101] = Day(ArrАкты(i, 8))
                .[N101] = Format(Month(ArrАкты(i, 8)), "mmmm")
                .[S101] = Year(ArrАкты(i, 8))
                
                .[K102] = Day(ArrАкты(i, 9))
                .[N102] = Format(Month(ArrАкты(i, 9)), "mmmm")
                .[S102] = Year(ArrАкты(i, 9))
[/vba]
где-то здесь ошибка кроется?

Автор - Webbear
Дата добавления - 29.09.2016 в 06:22
devilkurs Дата: Четверг, 29.09.2016, 11:30 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Webbear,
Перемудрил. Замените на:
[vba]
Код
.[N101] = Format(ArrАкты(i, 8), "mmmm")
....
.[N102] = Format(ArrАкты(i, 9), "mmmm")
[/vba]

Сделал удаление всех лишних листов перед формированием актов
К сообщению приложен файл: 1213476.xlsm (80.5 Kb)




Сообщение отредактировал devilkurs - Четверг, 29.09.2016, 11:31
 
Ответить
СообщениеWebbear,
Перемудрил. Замените на:
[vba]
Код
.[N101] = Format(ArrАкты(i, 8), "mmmm")
....
.[N102] = Format(ArrАкты(i, 9), "mmmm")
[/vba]

Сделал удаление всех лишних листов перед формированием актов

Автор - devilkurs
Дата добавления - 29.09.2016 в 11:30
Webbear Дата: Четверг, 29.09.2016, 12:03 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Как код в спойлер загнать?
 
Ответить
СообщениеКак код в спойлер загнать?

Автор - Webbear
Дата добавления - 29.09.2016 в 12:03
Webbear Дата: Четверг, 29.09.2016, 12:09 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
devilkurs, не сочтите за труд, очень хочу разобраться а не в слепую использовать вашу работу.
Объясните дураку общие принципы и алгоритмы. Вопросы прямо в коде:


Сообщение отредактировал Webbear - Четверг, 29.09.2016, 12:13
 
Ответить
Сообщение devilkurs, не сочтите за труд, очень хочу разобраться а не в слепую использовать вашу работу.
Объясните дураку общие принципы и алгоритмы. Вопросы прямо в коде:

Автор - Webbear
Дата добавления - 29.09.2016 в 12:09
Webbear Дата: Четверг, 29.09.2016, 12:16 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Ооо! Получилось :D
Продолжение:
 
Ответить
СообщениеОоо! Получилось :D
Продолжение:

Автор - Webbear
Дата добавления - 29.09.2016 в 12:16
devilkurs Дата: Четверг, 29.09.2016, 14:18 | Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Webbear, пока комментировал код нашел недочет свой. Исправил.
Окончательный код в файле. Комментарии там же. Не судите строго, комментатор из меня "великий". Я самоучка, и как понимаю - так и написал ))))))))

Кстати отдельно спасибо за значения на листе Основные параметры. Посмеялся )))))
К сообщению приложен файл: 5134694.xlsm (88.6 Kb)


 
Ответить
СообщениеWebbear, пока комментировал код нашел недочет свой. Исправил.
Окончательный код в файле. Комментарии там же. Не судите строго, комментатор из меня "великий". Я самоучка, и как понимаю - так и написал ))))))))

Кстати отдельно спасибо за значения на листе Основные параметры. Посмеялся )))))

Автор - devilkurs
Дата добавления - 29.09.2016 в 14:18
Webbear Дата: Четверг, 29.09.2016, 15:41 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Я самоучка, и как понимаю - так и написал ))))))))

То что нужно :D

Кстати отдельно спасибо за значения на листе Основные параметры. Посмеялся )))))

Старался, что-бы не скучно было :D
 
Ответить
Сообщение
Я самоучка, и как понимаю - так и написал ))))))))

То что нужно :D

Кстати отдельно спасибо за значения на листе Основные параметры. Посмеялся )))))

Старался, что-бы не скучно было :D

Автор - Webbear
Дата добавления - 29.09.2016 в 15:41
Webbear Дата: Четверг, 29.09.2016, 15:48 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
И здесь видимо вместо
[vba]
Код
Cells(i, 1) = .Range("A48") & " " & .Range("A49") & " № " & .Range("B51") & " " & .Range("T82") & " " & .Range("A83")
[/vba]
надо
[vba]
Код
Cells(i, 1) = .Range("A48") & " " & .Range("A49") & " № " & .Range("B51") & " " & .Range("T81") & " " & .Range("A82") & " " & .Range("A83")
[/vba]
 
Ответить
СообщениеИ здесь видимо вместо
[vba]
Код
Cells(i, 1) = .Range("A48") & " " & .Range("A49") & " № " & .Range("B51") & " " & .Range("T82") & " " & .Range("A83")
[/vba]
надо
[vba]
Код
Cells(i, 1) = .Range("A48") & " " & .Range("A49") & " № " & .Range("B51") & " " & .Range("T81") & " " & .Range("A82") & " " & .Range("A83")
[/vba]

Автор - Webbear
Дата добавления - 29.09.2016 в 15:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автозаполнение актов скрытых работ на разных листах. (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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