Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 След.
Печать нескольких листов одним кликом, Макрос для выбора нескольких листов для вывода на печать
 
MikeVol, Спасибо. Но с данным методом что то не так. Он мне 2 страницы - на 28 страниц разбил, как Бог на душу ему положил. Воедино не собрать.
Не получится, буду по одной странице выводить на печать.

Я с формулами работаю хорошо. Не супер профессионал конечно, но для меня более чем достаточно, а вот vba -полный лес, хоть и пытаюсь иной раз код какой нибудь применить у себя.

Так что, не обессудьте.
Изменено: Sheriff - 04.11.2024 00:14:28
Печать нескольких листов одним кликом, Макрос для выбора нескольких листов для вывода на печать
 
MikeVol, Данный вариант выводит всё в формат pdf, не спрашивая. По умолчанию. Мне нужно, выделить два листа и запустить на печать... Каким принтером не важно. Октыться должен просмотрщик и печать.
Печать нескольких листов одним кликом, Макрос для выбора нескольких листов для вывода на печать
 
nilske, Нет, не забыл. Статья «Как распечатать несколько листов Excel в одном файле PDF с помощью VBA (методы 6)». Но мне не нужно печатать в pdf. Ещё раз говорю, я привёл данный пример, как показательный.  
Печать нескольких листов одним кликом, Макрос для выбора нескольких листов для вывода на печать
 
MikeVol, Ваш макрос очень для меня сложный оказался. Он запускает на компиляцию сразу два листа в pdf, но на при выборе принтера печатает их опять по очереди.
Вычленить объединение листов из кода, к сожалению у меня не хватает ума.  
Печать нескольких листов одним кликом, Макрос для выбора нескольких листов для вывода на печать
 
Цитата
написал:
Ну про PDF речи не было, а про
Вы меня не правильно поняли. Вариант с pdf, привёл как пример, для наглядности.
Командой:
Код
Application.Dialogs(xlDialogPrinterSetup).Show
я вызываю окно выбора принтера. И выбираю или принтер, или программу компиляции файла в формат pdf.

У меня макрос:
Код
Sub PrintAll()
    Set PList1 = ThisWorkbook.Worksheets("стр1")
    Set PList2 = ThisWorkbook.Worksheets("стр2")
    PList1.Calculate
    Application.Dialogs(xlDialogPrinterSetup).Show 'выбор принтера для печати
    PList1.PrintOut
    PList2.PrintOut
End Sub
выбирает один лист (стр1), потом второй (стр2) и выводит их по очереди на печать:
   

Вами предложенные варианты, выполняют аналогичный алгоритм

А у меня задача, вывести оба листа одновременно:

Тогда при просмотре появляется сразу 2 страницы:

 И я могу хоть на принтер отправить, хоть в программу для компиляции в pdf.
Изменено: Sheriff - 03.11.2024 18:01:41
Печать нескольких листов одним кликом, Макрос для выбора нескольких листов для вывода на печать
 
Спасибо большое. Но такой метод вывода на печать (все три варианта) - последовательный. Т.е. печатается одна страница, потом вторая. Если я запускаю печать в pdf например, то создаются два файла.
У меня так тоже получается разными способами.
Задача напечатать сразу два листа.
Если без макроса, то я выделяю два листа книги и кликаю Ctrl+P. У меня сразу на печать два листа. Если я вывожу печать в pdf, у меня получается один файл с двумя листами.
И вот именно такой финт, у меня не получается исполнить с помощью макроса.
Изменено: Sheriff - 03.11.2024 13:46:26
Печать нескольких листов одним кликом, Макрос для выбора нескольких листов для вывода на печать
 
Дорогие форумчане!
Подобные решения есть, но ни как не могу применить к моей задачи. Прошу помощи.
Есть у меня такие макросы для вывода на печать листов:
Код
Option Explicit
Dim PList1 As Worksheet
Dim PList2 As Worksheet

Sub Print_PList1()
    Set PList1 = ThisWorkbook.Worksheets("стр1")
    PList1.Calculate
    Application.Dialogs(xlDialogPrinterSetup).Show
    PList1.PrintOut
End Sub

Sub Print_PList2()
    Set PList2 = ThisWorkbook.Worksheets("стр2")
    PList2.Calculate
    Application.Dialogs(xlDialogPrinterSetup).Show
    PList2.PrintOut
End Sub
Хочу, подправить макрос, что бы он выводил на печать сразу оба листа. Но что бы не делал, выдаёт ошибку. По одному - работают отлично.
Печать подписи в конце длинной таблицы
 
Я даже пробовал область печати задавать динамически изменяемой формулой, сцепляя две области. Но он печатает все страницы одной области, а страницу с подписями выводит на отдельную.
Может можно макросом как-то скрывать пустые строки таблицы, тогда получится, но как этого сделать я не знаю. Но идея кажется рабочей.
Объединение ячеек по условию, Объединение ячеек по условию с помощью макроса
 
Sanim, Формулами указать первый и последний день месяца, проблемм нет. Проставить везде 31, а в зависимости от месяца прописывать фактически сколько дней можно, но это только шапка айсберга. Из 3 строки собираются данные по дням и окрашиваются ячейки графика. Выложил часть, с которой у меня сложности. Всё остальное реализовано.

Приходится выкручиваться с постоянным объединением. Если бы ещё не было высокостного года... а так много условий. Вот и подумал, что можно было бы объединить ячейки макросом по условию.
Создать кнопку и в зависимости от месяца начала и продолжительности графика, объединить ячейки в 1 и 2 строках. В интернете нашёл только такой вариант: https://exceltable.com/vba-macros/kak-obedinit-yacheyki-makros, но к решению  моей задачи применить не смог.
Объединение ячеек по условию, Объединение ячеек по условию с помощью макроса
 
Всем доброго времени суток!

Сталкнулся со следующей задачей, как реализовать, не знаю. Может кто подскажет, буду крайне благодарен.

Есть строка, в которой указывается дата начала, и далее все ячейки +1 к данной дате. Получается период начала и окончания. (это строка 3)
В строке 1, объединённые ячейки групируют месяц, и формулой я подгружаю из строки 3, имя месяца и год
В строке 2, в объединённых ячейках указываю периоды месяца: 1-10, 11-20, 21 - 30(31, 28, 29)
В зависимости от того, какой месяц, мне приходится в ручную переобъединять ячейки с месяцем и датами.

Вопрос, можно ли, в зависимости от месяца, по условию макросом объединять ячейки в 1 строке (1-30, 1-31, 1-28 (29)) и во второй строке аналогично?
Файл прилагаю.
Изменено: Sheriff - 08.04.2024 20:25:50
Имя Умной таблицы в ячейке
 
ddmax, а можно поинтересоваться, как указали имя умной таблицы с помощью формулы?

А по вашему вопросу, я через фунццию ДВССЫЛ() ссылку прописываю. Если "Умная таблица" из одного столбца, то просто указываю ссылку на ячейку где её имя, если несколько, то комбинирую.

например имя Умной таблицы - QWA и у меё 3 столбца: Столбец_1, Столбец_2 и Столбец_3.
Мне нужно найти значение в Столбец_3 на основании данных из Столбец_1.
В ячейке скажем A1 указано имя Умной таблицы. Формула следующая:

Код
=ВПР(Искомое_значение;ДВССЫЛ(A1&"[Столбец_1]");3;)


И всё будет работать. Но лучше пользоваться через ИНДЕКС, больше возможностей и гибче:

Код
=ИНДЕКС(ДВССЫЛ(A1);ПОИСКПОЗ(Искомое_значение;ДВССЫЛ(A1&"[Столбец_1]"););3)
Изменено: Sheriff - 07.02.2024 17:43:13
Разбить строку на 2 части по количеству символов, запустить цикл по разделению длинной строки на части
 
New, спасибо!!!!!
Разбить строку на 2 части по количеству символов, запустить цикл по разделению длинной строки на части
 
Jack Famous, Да не нужны мне ячейки, сам с ними справлюсь.
Не получается переделать, как только не пробовал.
И так:
Код
Sub test()
Dim x, tx$
    tx = UserForm1.TextBox1.Value
    x = SplitBy58(tx): If Not IsArray(x) Then UserForm1.TextBox2.Value x = vbInformation: Exit Sub
    UserForm1.TextBox2.Value x(1) = vbInformation: UserForm1.TextBox3.Value x(2) = vbInformation
End Sub
И так:
Код
Sub test()
Dim x, tx$
    tx = UserForm1.TextBox1.Value
    x = SplitBy58(tx): If Not IsArray(x) Then UserForm1.TextBox2.Value = x, vbInformation: Exit Sub
    UserForm1.TextBox2.Value = x(1), vbInformation: UserForm1.TextBox3.Value = x(2), vbInformation
End Sub
И так:
Код
Sub test()
Dim x, tx$
    tx = UserForm1.TextBox1.Value
    x = SplitBy58(tx): If Not IsArray(x) Then UserForm1.TextBox2.Value = vbInformation: Exit Sub
    UserForm1.TextBox2.Value = vbInformation
    UserForm1.TextBox3.Value = vbInformation
End Sub
Какие ещё есть варианты?
Разбить строку на 2 части по количеству символов, запустить цикл по разделению длинной строки на части
 
Msi2102, Я вас услышал. Но как из textbox перенести в ячейку, я знаю, а как при этом обработать запрос и разделить в разные ячейки таблицы, для меня тёмный лес.  
Разбить строку на 2 части по количеству символов, запустить цикл по разделению длинной строки на части
 
Msi2102, Да я так и собирался. Но что бы проще объяснить что мне нужно, описал суть проблемы, что нужно и как разбить.
Но как это сделать с вашими примерами, я так и не понял. Пока понимаю VBA на примитивном уровне.

Jack Famous, отлично написан макрос! в окнах выскакивает как мне нужно! И я вместо MsgBox прописываю UserForm1.TextBox2.Value - И у меня ошибка.
Понимаю, что ни так как то нужно. А как правильно, не знаю.

Всем спасибо.  
Разбить строку на 2 части по количеству символов, запустить цикл по разделению длинной строки на части
 
Jack Famous, То что нужно, работает отлично, но это окна, а как с textbox связать?

Подскажите, файл во вложении.
Разбить строку на 2 части по количеству символов, запустить цикл по разделению длинной строки на части
 
Msi2102, нет, там не ручной ввод. Я ComboBox-ами выбираю, город, улицу, объект.
все данные соединяются  в textbox1. И должны по нажатию кнопки заполнить форму в excel. Но длина строки в форме вмещает не более 58 символов.
вот и нужно сделать перенос на другую строку.
Разбить строку на 2 части по количеству символов, запустить цикл по разделению длинной строки на части
 
Всем доброго времени!

Есть три textBox. В один, скажем textbox1 записывается адрес. Если адрес более определённого количества символов (более 58), то нужно разделить текст на 2 части. До 58 символов в textbox2 и весь остаток в textbox3.

Но есть одна заковырка, если 59 символ является продолжением не законченного слова, то нужно найти начало этого слова, и перенести его в textbox3 целиком, а в textbox2 записать соответственно не 58 символов, а меньше, до начало слова.

Пример:
г. Санкт-Петербург, ул. Бухарестская, 27 корп.12, (м-н Старая Деревня)          'текст который в textbox1. Всего 71 символ
г. Санкт-Петербург, ул. Бухарестская, 27 корп.12, (м-н                                        'текст который должен попасть в textbox2 - 55 символов
Старая Деревня)                                                                                                     'остальной текст в textbox3

Мои мысли, проверить 59 символ, если пробел, то всё ОК. 58 символов в textbox2, остальное в textbox3. Если нет, то проверяем 57 символ, потом 56, 55, 54 и т.д. пока не найдём пробел. Как только пробел найден, то осуществляем деление на 2 части.
Но как это написать кодом? Подскажите пожалуйста.
Изменено: Юрий М - 30.08.2022 16:02:14
=ВПР ошибка #Н/Д, В чём может быть причина? =ВПР ошибка #Н/Д
 
Руслан Колесниченко, ВПР не работает слева на право. Тебе нужно поменять столбцы местами или формулу другую применить, не ВПР а ИНДЕКС:

=ИНДЕКС(A2:B5;ПОИСКПОЗ(G5;B2:B5;);1)

Заполнение TextBox, Значение в TextBox из таблицы в зависимости от значения в ComboBox
 
Нашёл решение другим способом обработать запрос. Так правда и не понял, почему мой способ не работает..., ну да ладно.

Вот кусок кода, вдруг кому не будь пригодится:
Код
   Set Cell_k = ShopListObj.ListColumns.Item(1).Range.Find(FormShop.CBoxGP.Value, LookAt:=xlWhole)
    If Not Cell_k Is Nothing Then    'Если компания найдена
        FormShop.tb_INN.Value = Cell_k.Cells(1, 2)
    End If
Тему можно считать закрытой.
Заполнение TextBox, Значение в TextBox из таблицы в зависимости от значения в ComboBox
 
Всем доброго!
Есть умная таблица. В ней несколько столбцов. В первый я ввожу наименование организации. Во второй её ИНН
Если такая компания уже есть, то ИНН должен автоматом заполнить TextBox. Если нет, то я в ручном вводе вношу и компанию и ИНН.
Прописал в Коде к форме, по клику по TextBox, вызов функции из модуля.
Вот код в модуле:
Код
Sub AddINN() 'Заполняем textbox значением ИНН в зависимости от выбора компании
    Set ShopSheet = ThisWorkbook.Worksheets("Покупатель")
    Set ShopListObj = ShopSheet.ListObjects("UTBShop")
    
    If IfNa(Match(FormShop.CBoxGP, ShopListObj.ListColumns(1), 0), 0) > 0 Then
        FormShop.tb_INN = Application.VLookup(FormShop.CBoxGP, ShopListObj.Range, 2, 0)
    End If
End Sub
Если убрать "ЕСЛИ", то из списка в ComboBox я выбираю компанию, появляется в TextBox её ИНН. Но если компании в списке нет, то у меня выскакивает ошибка. Прописал условие If, вообще всё перестало работать.
Ногами сильно не бейте, просто укажите, где ошибка? Я только учусь.
Изменено: Sheriff - 06.08.2022 22:08:31
Значение textbox по формуле
 
RAN, СПАСИБО!!!!
Значение textbox по формуле
 
Пробовал в модуле прописать, тоже ни чего не выходит:
Код
Sub AddINN() 
    Set ShopSheet = ThisWorkbook.Worksheets("Покупатель")
    Set ShopListObj = ShopSheet.ListObjects("UTBShop")
    FormShop.tb_INN = Application.VLookup(FormShop.CBoxGP, ShopListObj, 2, 0)
End Sub
Значение textbox по формуле
 
Пробую применить у себя, но как то не выходит каменный цветок.
У меня есть combobox: CBoxGP
В него я из выпадающего списка ввожу название компании, если она есть. Если нет, то заполняю вручную
А в textbox (tb_INN) я хочу, что бы автоматом прописывался ИНН компании, если естественно такая компания присутствует в списке. Если нет, то ввожу соответственно вручную.
Данные беру из умной таблицы: UTBShop на листе "Покупатель"

Вот мой код:
Код
Private Sub CBoxGP_Change()
    tb_INN = Application.VLookup(CBoxGP, ListObjects("UTBShop"), 2, 0)
End Sub

Что делаю нет?

Извините, за глупые вопросы, но VBA только постигаю.

Формула ЕСЛИ с множеством условий, формула ЕСЛИ, расписала условия по сменным графикам в зависимости от времени явки/ухода, но формула не срабатывает.
 
Цитата
Мне необходимо, чтобы подтягивал номер смены в зависимости от явки. Например 1 смена это явка 00 ночи до 7 утра, далее 5ДН явка с 6,8 часов до 8 часов, далее 2* смена явка с 12,8 часов до 14,0, еще одна 2 смена явка с 18 до 22.  И если время с 14 до 18 , то чтобы выдал ОШИБКУ/ЛОЖЬ, так как это или опоздание или сверхурочка. Время перевела в число.

Во первых есть несколько конфликтов в данном описании:
1. Числовые значения от 6,8 до 7 - по вашим данным дублируются. Т.е значение к примеру 6,9 актуально и для Смены 1, и для смены 5ДН. Я в формуле внёс диапазон с 0 до 6,8 и следующий с 6,8 до 8 - так данные не пересекаются.

2. Есть данные, которые не вошли не в один из намеченных вами диапазоном, например такие как: 21,58 или 20,57.... У себя в формуле я их пометил как "Недопустимое значение"

В остальном работает всё исправно. Проверяйте.
Изменено: Sheriff - 18.07.2022 07:23:12
Нумерация без повторов, Нумерация строк в умной таблице без повторов
 
Ігор Гончаренко, да в textbox номер будет следующий, но если ввели данные не корректно, и нужно изменить строку. То предполагается, что введя уже существующий номер, программа предложит заменить ранее введённые данные. Т.е. должна быть ещё проверка при вводе, на уникальность номеров.
В самом начале я описал подробно, что должно получится..., но как это сделать мне не доходит. Я к сожалению только начал изучать VBA.
Поиск и консолидация, Поиск и консолидация
 
Ну теперь всё понятно. Забирай
Поиск и консолидация, Поиск и консолидация
 
Может я что то не догоняю, но что нужно сделать, из описания, даже просмотрев файл, я к сожалению так и не понял...

Можно пример сделать, как должно получиться, для наглядности?
Формула ЕСЛИ с множеством условий, формула ЕСЛИ, расписала условия по сменным графикам в зависимости от времени явки/ухода, но формула не срабатывает.
 
Ирина Медведева, у вас в формуле значение сразу и больше 0 и больше или равно 7... Это как? Может быть оно должно быть в пределах между 0 и 7?

Пропишите просто: от 0 до 7(включительно) - 1
От 7 до 14 (включительно) - 2
если 8 - 5ДН
Если больше 22 - 2*

Примерно так, можете прописать?
Изменено: Sheriff - 17.07.2022 20:36:39
Формула ЕСЛИ с множеством условий, формула ЕСЛИ, расписала условия по сменным графикам в зависимости от времени явки/ухода, но формула не срабатывает.
 
Ирина Медведева, и теперь по русски, без формул, при каких условиях что должно проставляться? А то там так на мудрено, что я голову сломал разбираться. При каких параметрах должны быть значения: 1, 2, 2* и 5ДН
Изменено: Sheriff - 17.07.2022 20:31:30
Страницы: 1 2 3 4 5 6 След.
Наверх