20.11.2018 11:12:33
Добрый день, знатоки! Столкнулся с неприятной проблемой (вроде бы ни чего сложного), но изящного решения не придумаю.
Есть выпадающий список который формируется автоматически при добавлении новых листов. При выборе данных в этом списке их названия накапливаются Нужно применить ExportAsFixedFormat, но применить Sheets(Array()).Select не могу так как постоянно изменяется количество и названия листов. Как выбрать именно нужные листы по их названиям которые будут введены к примеру в диапазон A1:A10 и соответственно перенести их в один файл .pdf.
Изменено:
Знаю что можно сделать проще, но ведь работает!
|
|
|
03.07.2018 23:34:09
Alemox, СПАСИБО ОГРОМНОЕ. Завтра проверю на рабочем компе, но думаю всё будет окей. На моём ПК полёт нормальный. Зависаний нет. Всё что нужно было сделать почистить макрос. Хоть я так и не понял, что его так тормозило, но вроде бы проблема решена!
Знаю что можно сделать проще, но ведь работает!
|
|
|
03.07.2018 23:27:33
Дело в том, что в ТекстБокс нужно вывести текст из ячейки и в текстбоксе должна быть именно дата и время. Как Вы заметили из кода этот отчёт заполняют несколько лиц и очень многое построено и зависит от дат. Когда я сделал пустой текстбокс для ввода даты и времени я столкнулся с проблемой неумения верно вводить дату и время людьми которые заполняют этот отчёт. Поэтому я сделал отдельно четыре кнопки которые в заблокированный текстбокс (tb2) будут соответственно добавлять день\час и отнимать их что позволило в реальном времени видеть и выставлять нужное им время и дату. минуты вводит диспетчер самостоятельно в текстбокс который воспринимает только числа. Таким, может не самым разумным, методом я решил проблему криворукости сотрудников. Кстати при обращении к листу по кодовому имени вы уже не используете приставку эта книга, почему?
Изменено:
Знаю что можно сделать проще, но ведь работает!
|
|||
|
03.07.2018 21:37:12
Да! Книги открываются одновременно. Спасибо большое за чистку кода. Дело в том, что я не очень хорошо владею VB. Этот код я начинал делать с нулевыми знаниями VB и по мере узнавания языка я его корректировал исходя из этого могли остаться не нужные строки типа "Set sh = Sheets(2)" Работал и я этому был рад) Дело в том что это маленькая часть кода весь код на много больше. Но зависания происходит именно на этом этапе. По поводу книг они открываются при открытии этой книги и если всё в порядке, то сразу же закрываются, а если нет выводятся на передний план. Может вы подскажите "completed" Как видно по коду это не имя листа в натуре это Типа CodeName или как-то так. Дело в том, что листы могут поменять местами и переименовать, а постоянно ловить эту проблему не охота, да и самому может это понадобится. Скажите, как ваш код улучшить, но с обращением по коденейму. Код полноценно работает с именами в натуре.
Знаю что можно сделать проще, но ведь работает!
|
|||
|
03.07.2018 17:59:10
Private Sub UserForm_Initialize() Application.ScreenUpdating = False Application.DisplayAlerts = False If Form.Cells(9, 6).Value = "" Or Form.Cells(9, 7).Value = "" Then MsgBox ("Звіт буде закритий. Не вибрано диспетчера або зміну.") ThisWorkbook.Close End If completed.Activate On Error Resume Next LastRow = Cells(Rows.Count, 2).End(xlUp).Row Cells(LastRow + 1, 34).Value = "" Cells(LastRow + 1, 36).Value = "" Cells(LastRow + 1, 45).Value = Form.Cells(9, 6).Value Cells(LastRow + 1, 46).Value = Form.Cells(9, 7).Value Set sh = Base tb1.Text = Cells(LastRow, 2).Value + 1 tb2.Text = Cells(LastRow, 3).Value tb2.Value = Format(tb2.Value, "dd.mm.yyyy hh:nn") Locality.List = sh.Range("A1:A21").Value Locality.Text = Cells(LastRow, ![]() Street.Text = Cells(LastRow, 10).Value cb3.List = sh.Range("C1:C15").Value Set sh = Sheets(2) tb7.Value = Cells(LastRow, 7).Value tb9.Value = Cells(LastRow, 9).Value End Sub
Изменено:
Знаю что можно сделать проще, но ведь работает!
|
|||
|
03.07.2018 00:45:33
Добрый день! Проблема такова. Есть макрос (далеко не идеален, так как самоучка и большую часть знаний вынес с этого сайта), стабильно работал уже более полу года, теперь почему-то при активации формы стал загружать ЦП и эксель виснет почти наглухо. Единственное примечание. В книге несколько листов (6 видимых и 12 скрытых) при открытии книги срабатывает макрос, который проводит открытие некоторых книг (анализирует данные, если всё в порядке, то их закрывает) и активирует 1-й лист книги (то есть при открытии проблемной книги активируется всегда 1-й лист), на первом листе есть кнопка, которая и активирует нужный макрос. Так вот если запустить книгу и нажать на кнопку, то макрос работает без каких-либо проблем, но если зайти в книгу посмотреть сначала на кокой либо из листов (не меняя абсолютно ни чего даже не активируя ячейку) и вернуться обратно на первый лист и запустить макрос вот тут и происходит проблема. Подскажите в чём может быть причина. Проблема сохраняется на 2 ПК (win 10 и win 8.1) Office 2016 и Office 2013. Форум листал похожей проблемы не нашёл. Есть проблемы, но там либо макрос не так работает, либо цикл (у меня его нет) либо проблема на одно пк, а на другом нет. А так что бы именно при переходе с листа на лист и обратно появлялась проблема такого я не видел.
Изменено:
Знаю что можно сделать проще, но ведь работает!
|
|
|
10.03.2016 22:49:12
И это ваш вопрос? Да вы гений! Вы мне очень упростили задачу. А по поводу вопроса, просто я его не называл и как то не удосужился переименовать!
Может вы подскажите можно ли организовать вторую часть вопроса?
Знаю что можно сделать проще, но ведь работает!
|
|||
|
07.12.2015 22:34:47
Юрий М, к сожалению не выходит. Так как при переходе на новый цыкл. Он заменяет старое примечание на новое (полностью). А нужно что бы добавил. Можно ли как то перед формированием текста скопировать весь что был до этого, а после вставить на строку ниже?
Знаю что можно сделать проще, но ведь работает!
|
|
|
07.12.2015 22:13:32
Уважаемые знатоки. Подскажите как исправить код? Нужно что бы в примечание к ячейке ставились пункты 1.,2. и т.д. столько сколько пунктов выберут из ListBox
Порядок и вставку я сделал. Но ставит он только последний пункт в Коментарии заменяя все остальные. Что можно сделать что бы он переходил на новую строку не удалял предыдущий комментарий а добавлял новый.
Знаю что можно сделать проще, но ведь работает!
|
|||
|
26.11.2015 19:22:17
Добрый день. Подскажите как лучше организовать живой поиск по ListBox. Дело в том что есть набор пунктов которые автоматически добавляются в Листбокс значений много с листбокса могут выбирать несколько значений. То-есть При вводе первых букв например в определенном TextBox данные в ListBox фильтровались автоматически и потом можно было выбрать значение уже с отфильтрованых данных. К сожалению приложить файл нет возможности((
Знаю что можно сделать проще, но ведь работает!
|
|
|
22.10.2015 23:30:35
Sanja, Что я могу приложить если данная ветка макроса начинается делаться с 0.
Ну вот что как выглядит самая ячейка . tp как задать переменную tp что бы получить дату прописью на украинском языке и которая склоняется? Остальной код не касается всего этого. Я приношу свои извинения я читаю правила просто первый день тут еще не все понимаю что от меня хотят.
Изменено:
Знаю что можно сделать проще, но ведь работает!
|
|||
|
22.10.2015 23:01:00
МВТ, Дело в том что сам файл довольно большой. А мкрос можно и через Privat Sub написать я как бы все данные предоставил. Что уточнить могу все написать.
через TextBox.Change так же не выходит нужна какая то маска, а так происходит замена всего текста в txtBox и то только тогда когда кроме заданного на изменение тект больше ни чего нет. Я пробовал через If ... Then...Else ![]()
Знаю что можно сделать проще, но ведь работает!
|
|
|