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

Страницы: 1
Помогите создать условие просчета товара из Китая исходя из веса и плотности товара по товарной сетке, мозг взорван!
 
mfarrukh, напишите формулу словами, например
ЦенаТовара = Плотность / Вес

Вообще не очень понятно зачем плотность включать в расчёт стоимости, если у вас транспортная компания, там вас должны интересовать только три главных параметра: Объём V (габариты Ш*В*Д, литры, м3), Вес P (кг), Расстояние доставки S (км).
Плотность, она же кг/м3 вам зачем в расчётах?
Условное форматирование по группам
 
Если я правильно понял, то вам нужно форматирование по условию прописанному в соседних ячейках, для этого нужно прописать формулу. Вроде целое видео на эту тему есть. Я сделал для примера для двух групп, посмотрите и по аналогии может добавить форматирование для остальных рангов.
Если же нужно что-то другое, то приложите результат как это должно выглядеть визуально, просто закрасьте ячейки как вам надо.
Добавление элементов управления формы и кнопки сброса значений в дефолтные
 
Effiral, вот вариант как это можно реализовать:
1) заходите во вкладку "Разработчик", выбираете "Вставить",  далее находите флажок, размещаете его над ячейкой;
2) кликаете правую кнопку мыши на флажке, в контекстном меню выбираете "Формат объекта";
3) во вкладке "Элемент управления" в поле "Связь с ячейкой" выбираете ячейку на которую должен влиять данный флажок и нажимаете Ок;
4) протягиваете ячейку чтобы продублировать флажки, и для каждого через свойства пишите на какую ячейку ему ссылаться.

При значении True (флажок установлен) в ячейке будет ИСТИНА, при значении Flase (флажок снят) будет ЛОЖЬ. Если не хотите видеть эти слова, поставьте им цвет шрифта под фон, в вашем случае оттенок зелёного.
Изменено: Wofchik - 11.05.2023 17:48:33
Как узнать свойство "Только для чтения" открытого файла?
 
Михаил, ещё вариант получить атрибут файла
Код
Function isReadOnly(ByVal strFileName As String) As Boolean ' функция проверяющая, является ли документ "Только для чтения"
    'vbNormal = 0, vbReadOnly = 1, vbHidden = 2, vbDirectory = 16
    If Len(strFileName) > 0 Then isReadOnly = GetAttr(strFileName) And vbReadOnly
End Function
Изменено: Wofchik - 21.04.2023 15:58:40
Блокировка листа или книги при достижении определенного количества запусков макроса
 
Кирилл Матвеев, если вы хотите дать тестирование на несколько дней и чтобы была только одна попытка пройти тест, и я так понял, что файл вы высылаете, то Excel здесь не лучшее решение.
Всегда можно запустить файл заново не сохраняя или имея исходный файл, который можно или копировать заранее, или скачать из письма или оттуда, куда вы его передаёте.
Другими словами уже на этапе "у вас только одна попытка" всё ломается. Очень умные поймут как это обойти, такие ограничения хороши, когда вы файл даёте на своём ПК и есть возможность хоть какого-то мониторинга за человеком.
А если над душой вы не стоите, то смотрите в сторону теста онлайн, например, Google-форма, человек там ввёл своё ФИО, дату форма сама запомнит и там хоть и возможно заполнить две формы, но вы будете видеть, что человек сдал тест два раза и можно тогда ставить неуд за такое.
Или если Google-форма чем-то не подходит, то пишите сайт с тестом, по сути то же самое, только более гибкая настойка под ваши требования. Сегодня чтобы написать простецкий сайт вам помогут всякие умные чат-боты, если вы не владеете нужными языками, ну или гуглить готовый шаблон для теста.
Формирование отчета при помощи нескольких выделенных опций в ListBox на форме.
 
Logistic, добавил столбец со складом, а также добавил для ComboBox1 (тип отчёта) раскрытие по клику левой кнопкой мыши (но можно использовать и треугольник справа), также чуть поправил оформление кода и ширину полей в форме, тестируйте.
Изменено: Wofchik - 19.04.2023 12:25:36
dax. отфильтровать таблицу по вычисленному диапазону дат
 
Дмитрий Токарев, у вас файл для Power BI, вы для этой программы ищете решение?
Сбор данных из файлов excel в 1 файл VBA, Сбор данных из выбранной папки в 1 файл VBA
 
lilo295, текст выглядит как будто билет с экзамена, общий мотив понятен, но приложите файлы, которые надо объединить. Всегда понятнее когда есть ДО и ПОСЛЕ. А не только ТЗ.
[VBA] Копирование результатов подсчета в буфер обмена
 
andronus, попробуйте код с этого сайта https://vremya-ne-zhdet.ru/vba-excel/bufer-obmena/\
У меня почему-то не работает, но раньше такое решение работало.
Сортировка при клике чекбокса на листе
 
Andrey Andrey, можно, вот пример такого чекбокса, который при любом нажатии сортирует список слева (только три значения). Опишите подробнее, а ещё лучше приложите пример файла, чтобы было ясно что вы хотите и как сортировать.
Отмечать даты в календаре с указанием информации в примечании
 
An_2020, добавил код, который закрашивает ваш календарь. Но есть нюанс, код работает только с вашими нарисованными двумя месяцами, если надо элегантное решение не на два месяца, то надо определиться сколько месяцев вы будете рисовать и на все эти месяцы сделать единый цикл заливки дат, а не два одинаковых куска кода на каждый месяц с разницей только по столбцам (т.к. эти два месяца отличаются только номерами столбцов).

Ну и с форматированием можно поиграться, сам комментарий можно сделать любого цвета по заливке, поменять там размер шрифта и сам шрифт, и сам комментарий может быть не только прямоугольником, но и любой фигурой доступной в Excel.

Кроме того не лишней была бы кнопка очистки календаря, но раз по ТЗ не ясно сколько месяцев будет, то я такую кнопку добавлять не стал, пока можно ручками удалить все комментарии и все левые заливки.
Формирование отчета при помощи нескольких выделенных опций в ListBox на форме.
 
Logistic, добавил вам для складов массив, который записывает в себя все выбранные склады, а потом перебирает их, я так понял судя по множественному выбору (атрибут MultiSelect = 1) вы хотите выбирать несколько складов, но тут нестыковочка с шапкой отчёта, у вас там вот такой код
Код
.Cells(3, 1) = "Операция :" & " " & Me.ComboBox1 & " /  " & "склад :" & Me.ListBox1 & " /  "
Вы как хотите выводить название склада(ов)? Напишите готовый текст шапки, например,
Операция: расход / склад: Киев, Прилуки

Я тогда допишу как вывести массив в одну строку если это конечно надо, а если нужно отключить выбор нескольких складов, то нужно MultiSelect в ноль перевести, чтобы пользователь мог выбрать только одну строку (склад), при этом в коде править ничего не надо.
Можно ли как-нибудь "запечь" подложку представления времени?
 
Цитата
написал:
Какой это язык нужно проработать? И если есть, то пожалуйста толковый учебник.(ютуб курс)
Т.к. в MS Office уже встроен один язык: VBA, то его и рекомендую, там довольно низкий порог входа.
Хороший учебник Джон Уокенбах - Excel 2010. Профессиональное программирование на VBA или более поздняя редакция, в сети есть электронная версия для ознакомления. А также куча бесплатных видео уроков на YouTube.

Цитата
написал:
Концепт состоит в том, что из этой таблицы данные должны мигрировать в персональные сменные планы каждого машиниста (вот те квадратики в таблице это и есть поездка или говоря иначе -  смена), но это только начало и задача минимум.
Это легко решается с помощью средств VBA. Если всё создано по одному шаблону, везде и всегда одинаковое количество полей, то перенести данные из общей таблицы в персональные тоже легко программированием, просто приложите общий исходный документ и как должен выглядеть конечный персональный документ. Это очень простая задача по делению данных.

Цитата
написал:
Дальше мне нужно, чтобы "прога" увидела имя машиниста и составила в Ворде бронь (заполнила бы там два, ну максимум три/четыре поля) в определённый отель на его, машиниста, имя и дату из этой матрицы. Возможно подготовила бы черновик е-мейла с этим вложенным Вордом (хотя это уже фантастика, пусть бы хоть бы сделала Ворд в определённой папке для дальнейшей проверки на правильность, корректировки, если это необходимо, и отправки почтой ручками).
Опять же VBA позволяет сделать экспорт данных в Word (т.к. Word входит в пакет MS Office), т.е. можно написать небольшой код, который будет создавать doc-файлы для Word, где будут нужные данные из Excel, также нужны примеры ДО и ПОСЛЕ. И опять же, чтобы это работало на поток нужна стандартизация, чтобы всё было по единому шаблону. Что касается e-mail, то можно вызвать почтовый клиент и даже если это не OutLook, то, как костыль вставить там данные из буфера обмена, которые также можно туда поместить с помощью VBA.

Подводя итог, всё что вы описываете это довольно простая с точки зрения прикладного программирования задача, которая решается пакетом MS Office и VBA. Можно конечно пойти дальше и заказать у программистов полноценное ПО для таких задач, но это будет на порядки дороже или изучить посерьёзнее Python и на нём сделать какое-то ПО, оно будет работать чуть быстрее чем VBA (но думаю, что экономия в 3-5 минут вам погоды не сделает).
Если хотите попробовать реализовать всё в Excel, то составьте подробный план, прям по пунктам вида:
1) есть исходный файл (вложить его), там я беру вот такие то ячейки;
2) из этих ячеек я хочу вот такой документ;
3) и потом вот эти данные я хочу превратить вот в такой документ.
И всё это с вложениями по принципу БЫЛО и СТАЛО.
Когда будет визуализация в виде файлов, то уже можно предметно думать как это всё автоматизировать.
Изменено: Wofchik - 18.04.2023 10:01:23
Отмечать даты в календаре с указанием информации в примечании
 
An_2020, в приложенном документе нет листа "Нерабочие дни".
1) как вы хотите это реализовать? Условное форматирование или макросом?
2) всплывающая подсказка должна быть в виде обычного комментария или комментария ссылки?
3) какой сценарий предусмотрен для ситуации когда два человека взяли выходные? Комментарий тогда должен быть из двух фамилий или как?

Если реализация не важна, а главное внешний вид, то хоть в Paint нарисуйте как вы это видите, и я смогу подсказать как это можно реализовать.
Изменено: Wofchik - 17.04.2023 17:53:54
Можно ли как-нибудь "запечь" подложку представления времени?
 
Макрос мне кажется идеальным решением, нужно лишь для пустых, белых ячеек слева поставить красную пунктирную границу при условии, что нет чёрной границы и в самом макросе указать строки и столбцы.
Макрос можно для удобства добавить в личную книгу макросов (PERSONAL.XLSB, чтобы макрос всегда был под рукой) и запускать с панели быстрого доступа по Alt+цифра.
Но есть нюанс, чтобы этот макрос наводил красоту надо чтобы ячейки полей Von - Nach и Bemerkung были объединены как и другие.
Код
Sub Standardformatierung()
    Dim i As Long ' переменная цикла для строк
    Dim y As Long ' переменная цикла для столбцов
    
    Const intAnfangsspalte = 29 ' начальный столбец
    Const intLetzteSpalte = 192 ' конечный столбец
    
    Const intAnfangszeichenfolge = 8 ' начальная строка
    Const intEndeZeichenfolge = 97 ' конечная строка
        
        
    For i = intAnfangszeichenfolge To intEndeZeichenfolge
        For y = intAnfangsspalte To intLetzteSpalte Step 4
            If Sheets("Matrix").Cells(i, y).Value = "" And Sheets("Matrix").Cells(i, y).Interior.Color = vbWhite And Sheets("Matrix").Cells(i, y).Borders(xlEdgeLeft).LineStyle <> xlContinuous Then
                With Sheets("Matrix").Cells(i, y).Borders(xlEdgeLeft)
                    .LineStyle = xlDash
                    .Color = -16776961
                End With
            End If
        Next y
    Next i
End Sub
Дорожная карта
 
Юрий М, в каком смысле? Просьба дать более развёрнутый вопрос.
выгрузка дерева каталогов и файлов с атрибутами
 
Указанная вами ссылка на форум всё и выводит, кроме автора документа, если нужен прям автор, то вот решение, которое выводит просто простыню данных о каждом файле и папке.
Код
Sub Get_Extended_File_Property()
    Dim sFile As Object, obja
    
    'Create Shell Object & NameSpace
    Set oShell = CreateObject("Shell.Application")
    Set oDir = oShell.Namespace("C:\Новая папка\Более новая папка") ' укажите нужный адрес здесь
    ActiveSheet.Cells.ClearContents
    
    'Loop thru each File/Folder inside Root Directory
    iRow = 1
    For Each sFile In oDir.Items
        iRow = iRow + 1
        
        'Loop thru Each Property
        For i = -1 To 350
            
            'Get File Property Name & Value
            obja = oDir.GetDetailsOf(sFile, i)
            If obja <> "" Then
                iRow = iRow + 1
                ActiveSheet.Range("A" & iRow) = i
                
                'Enter File Property to Sheet
                ActiveSheet.Range("B" & iRow) = oDir.GetDetailsOf(oDir, i)
                ActiveSheet.Range("C" & iRow) = obja
            End If
        Next
    Next
    
    MsgBox "Process Completed"
End Sub
Дорожная карта
 
Обсуждаем в ЛС
Вернуть курсор в TextBox на VBA
 
Григорий, добрый день.
Если задача уведомлять пользователя, что он ввёл не те данные, то можно это делать по событию Change, добавьте в usf_PointA код и если пользователь будет вводить буквы или цифры, то в статус баре в левом нижнем углу будет комментарий, что не так (это не так навязчиво как MsgBox) и само поле закрасится в красный, или можно вместо заливки поменять только цвет текста на красный.
Это не отменяет итоговой проверки при нажатии на крестик или некую кнопку Ок/Записать но для пользователя немного нагляднее, т.к. реакция происходит в момент ввода данных и курсор он ещё не успел куда-то переключить.
Код
Private Sub tbx_NomDetalA_Change()
    If IsNumeric(tbx_NomDetalA.Value) = False Or tbx_NomDetalA.Value < 1 And tbx_NomDetalA.Value > 12 Then
        Application.StatusBar = "Диапазон допустимых значений: целое число от 1 до 12"
        tbx_NomDetalA.BackColor = vbRed
    Else
        tbx_NomDetalA.BackColor = vbWhite
    End If
End Sub
Путевой лист с макросами, Помогите сделать макрос на путевом листе по образцу
 
Павел, здравствуйте. В приложенном Образце нет ни строчки кода, если смотреть в редакторе VB. И всё что делает документ — просто вставляет данные из раскрывающегося списка. Если задача заполнять поля из некоего фиксированного списка значений, то достаточно использовать раскрывающиеся списки в самом Рапорте, что в области печати и не добавлять никаких макросов.
Погуглите "Создание раскрывающегося списка". (Данные -> Проверка данных), а справочники (ФИО, техника и прочее) оформите как умные таблицы на отдельном листе и на эти таблицы пусть ссылается ваш раскрывающийся список формулой ДВССЫЛ.
Изменено: Wofchik - 28.11.2022 18:10:29
Страницы: 1
Наверх