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

Вход

Регистрация

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

 

= Мир MS Excel/автоматизация ввода (пользов форма) и создание техкарт - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » автоматизация ввода (пользов форма) и создание техкарт (Макросы/Sub)
автоматизация ввода (пользов форма) и создание техкарт
nespica2012 Дата: Воскресенье, 21.11.2021, 17:50 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

день добрый, уважаемые форумчане! :hello:

вопрос:
в ручную ввожу данные в наряд для расчета заработной платы (Лист1)...
можно ли на автоматизировать создание технологических карт (нарядов) через пользовательскую форму и вводить информацию на Лист2 (в ручную перенес информацию), а в дальнейшем на основе этих данных уже создавать то, что необходимо?
есть переменная информация (изделие, партия, дата, ФИО работника, разряд работ, наличие коэффициента, время). Один работник может в один день выполнять разный разряд работ, по разным изделиям и партиям, и соответственно разное время.

создание итоговых технологических карт возможно и на отдельных листах
К сообщению приложен файл: __2021.xlsm(33.3 Kb)
 
Ответить
Сообщениедень добрый, уважаемые форумчане! :hello:

вопрос:
в ручную ввожу данные в наряд для расчета заработной платы (Лист1)...
можно ли на автоматизировать создание технологических карт (нарядов) через пользовательскую форму и вводить информацию на Лист2 (в ручную перенес информацию), а в дальнейшем на основе этих данных уже создавать то, что необходимо?
есть переменная информация (изделие, партия, дата, ФИО работника, разряд работ, наличие коэффициента, время). Один работник может в один день выполнять разный разряд работ, по разным изделиям и партиям, и соответственно разное время.

создание итоговых технологических карт возможно и на отдельных листах

Автор - nespica2012
Дата добавления - 21.11.2021 в 17:50
parovoznik Дата: Воскресенье, 21.11.2021, 23:03 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 407
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
nespica2012, для начала может и так подойдет, если правильно понял. С умными таблицами не работал.
К сообщению приложен файл: _2021.xlsm(39.9 Kb)
 
Ответить
Сообщениеnespica2012, для начала может и так подойдет, если правильно понял. С умными таблицами не работал.

Автор - parovoznik
Дата добавления - 21.11.2021 в 23:03
nespica2012 Дата: Понедельник, 22.11.2021, 05:54 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

начало положено, отлично,
надо еще иметь возможность добавить в форму отработанные часы на определенную дату

может разделить задачу на две части?
первая -это введение данных на лист 2 через пользовательскую форму,
а вторая -создавать техкарту на основе данных с листа 1
 
Ответить
Сообщениеначало положено, отлично,
надо еще иметь возможность добавить в форму отработанные часы на определенную дату

может разделить задачу на две части?
первая -это введение данных на лист 2 через пользовательскую форму,
а вторая -создавать техкарту на основе данных с листа 1

Автор - nespica2012
Дата добавления - 22.11.2021 в 05:54
parovoznik Дата: Понедельник, 22.11.2021, 13:00 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 407
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
nespica2012, я вам пример показал, а вы теперь далее усовершенствуйте.
Наберите в поисковике пользовательские формы vba изучайте применяйте,задавайте вопросы. У вас наверное много сотрудников надо вводить новых. Поэтому надо другой подход(поиск по первой букве делать )
 
Ответить
Сообщениеnespica2012, я вам пример показал, а вы теперь далее усовершенствуйте.
Наберите в поисковике пользовательские формы vba изучайте применяйте,задавайте вопросы. У вас наверное много сотрудников надо вводить новых. Поэтому надо другой подход(поиск по первой букве делать )

Автор - parovoznik
Дата добавления - 22.11.2021 в 13:00
MikeVol Дата: Понедельник, 22.11.2021, 13:33 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 140
Репутация: 15 ±
Замечаний: 0% ±

Excel 2019
nespica2012, Доброго времени суток. Слегка доработал форму и код. И как вариант получилось то что вы хотели. Надеюсь я вас правильно понял.
[spoiler]
Код формы:
[vba]
Код

Option Explicit
Dim i As Long, LastRow As Long, LastCol As Long
Dim x As Object, RngCol As Range

Private Sub Btn_Отмена_Click()
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Application.ScreenUpdating = False    ' выключили обновление экрана
    On Error Resume Next

    '          проверка на заполнение полей
    For Each x In Me.Controls

        If TypeOf x Is MSForms.TextBox Or TypeOf x Is MSForms.ComboBox Then

            If x.Value = "" Then
                MsgBox "Все обязательные поля должны быть заполнены!", 48, "Сообщение"
                Exit Sub
            End If

        End If

    Next

    With Sheet3    '          перенос данных с формы на лист
        LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        .Cells(LastRow + 1, 1) = Me.Cmb_Месяц
        .Cells(LastRow + 1, 2) = Me.Cmb_Год
        .Cells(LastRow + 1, 3) = CDbl(Me.txt_Изделие)
        .Cells(LastRow + 1, 4) = Me.Cmb_Партия
        .Cells(LastRow + 1, 5) = CDbl(Me.txt_Коэф)
        .Cells(LastRow + 1, 6) = Me.Cmb_ФИО
        .Cells(LastRow + 1, 7) = Me.Cmb_PP

        Set RngCol = .Rows(1).Find(Me.Cmb_День.Text, , xlFormulas, xlWhole)                        ' ячейка в первой строке выбранного дня
        .Cells(LastRow + 1, RngCol.Column) = Me.txt_Часы.Value

        '          форматирование таблицы
        .Range(.Cells(2, 1), .Cells(LastRow + 1, 29)).Borders.LineStyle = xlContinuous             ' обрамление ячеек
        .Range(Cells(2, 1), Cells(LastRow + 1, 29)).HorizontalAlignment = xlCenter                 ' выравнивание
        .Range(Cells(2, 1), Cells(LastRow + 1, 29)).VerticalAlignment = xlCenter
        Range("Таблица1[год]").NumberFormat = "yyyy"
    End With

    Application.ScreenUpdating = True    ' включили обновление экрана
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    Dim iPart As Long, iFIO As Long, iPP As Long

    For i = 1 To 12
        Me.Cmb_Месяц.AddItem Format(DateSerial(1, i, 1), "MMMM")
    Next

    Me.Cmb_Год.List = Array("2021", "2022", "2023")
    Me.Cmb_Год.ListIndex = 0

    With Sheet2
        iPart = .Cells(Rows.Count, 1).End(xlUp).Row
        iFIO = .Cells(Rows.Count, 2).End(xlUp).Row
        iPP = .Cells(Rows.Count, 3).End(xlUp).Row
        Me.Cmb_Партия.List = .Range("a2:a" & iPart).Value
        Me.Cmb_ФИО.List = .Range("b2:b" & iFIO).Value
        Me.Cmb_PP.List = .Range("c2:c" & iPP).Value
    End With

    With Sheet3
        Dim myArray() As Variant
        myArray = Range("H1:AC1")
        myArray = WorksheetFunction.Transpose(myArray)

        With UserForm1
            .Cmb_День.List = myArray
        End With

    End With

End Sub

[/vba]
К сообщению приложен файл: 22.11.21.xlsm(38.0 Kb)


Ученик - Наблюдатель. Учиться Никогда не поздно.

Сообщение отредактировал MikeVol - Понедельник, 22.11.2021, 15:40
 
Ответить
Сообщениеnespica2012, Доброго времени суток. Слегка доработал форму и код. И как вариант получилось то что вы хотели. Надеюсь я вас правильно понял.
[spoiler]
Код формы:
[vba]
Код

Option Explicit
Dim i As Long, LastRow As Long, LastCol As Long
Dim x As Object, RngCol As Range

Private Sub Btn_Отмена_Click()
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Application.ScreenUpdating = False    ' выключили обновление экрана
    On Error Resume Next

    '          проверка на заполнение полей
    For Each x In Me.Controls

        If TypeOf x Is MSForms.TextBox Or TypeOf x Is MSForms.ComboBox Then

            If x.Value = "" Then
                MsgBox "Все обязательные поля должны быть заполнены!", 48, "Сообщение"
                Exit Sub
            End If

        End If

    Next

    With Sheet3    '          перенос данных с формы на лист
        LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        .Cells(LastRow + 1, 1) = Me.Cmb_Месяц
        .Cells(LastRow + 1, 2) = Me.Cmb_Год
        .Cells(LastRow + 1, 3) = CDbl(Me.txt_Изделие)
        .Cells(LastRow + 1, 4) = Me.Cmb_Партия
        .Cells(LastRow + 1, 5) = CDbl(Me.txt_Коэф)
        .Cells(LastRow + 1, 6) = Me.Cmb_ФИО
        .Cells(LastRow + 1, 7) = Me.Cmb_PP

        Set RngCol = .Rows(1).Find(Me.Cmb_День.Text, , xlFormulas, xlWhole)                        ' ячейка в первой строке выбранного дня
        .Cells(LastRow + 1, RngCol.Column) = Me.txt_Часы.Value

        '          форматирование таблицы
        .Range(.Cells(2, 1), .Cells(LastRow + 1, 29)).Borders.LineStyle = xlContinuous             ' обрамление ячеек
        .Range(Cells(2, 1), Cells(LastRow + 1, 29)).HorizontalAlignment = xlCenter                 ' выравнивание
        .Range(Cells(2, 1), Cells(LastRow + 1, 29)).VerticalAlignment = xlCenter
        Range("Таблица1[год]").NumberFormat = "yyyy"
    End With

    Application.ScreenUpdating = True    ' включили обновление экрана
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    Dim iPart As Long, iFIO As Long, iPP As Long

    For i = 1 To 12
        Me.Cmb_Месяц.AddItem Format(DateSerial(1, i, 1), "MMMM")
    Next

    Me.Cmb_Год.List = Array("2021", "2022", "2023")
    Me.Cmb_Год.ListIndex = 0

    With Sheet2
        iPart = .Cells(Rows.Count, 1).End(xlUp).Row
        iFIO = .Cells(Rows.Count, 2).End(xlUp).Row
        iPP = .Cells(Rows.Count, 3).End(xlUp).Row
        Me.Cmb_Партия.List = .Range("a2:a" & iPart).Value
        Me.Cmb_ФИО.List = .Range("b2:b" & iFIO).Value
        Me.Cmb_PP.List = .Range("c2:c" & iPP).Value
    End With

    With Sheet3
        Dim myArray() As Variant
        myArray = Range("H1:AC1")
        myArray = WorksheetFunction.Transpose(myArray)

        With UserForm1
            .Cmb_День.List = myArray
        End With

    End With

End Sub

[/vba]

Автор - MikeVol
Дата добавления - 22.11.2021 в 13:33
parovoznik Дата: Понедельник, 22.11.2021, 13:52 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 407
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
MikeVol, это я не вам писал. Извините.


Сообщение отредактировал parovoznik - Понедельник, 22.11.2021, 20:51
 
Ответить
СообщениеMikeVol, это я не вам писал. Извините.

Автор - parovoznik
Дата добавления - 22.11.2021 в 13:52
MikeVol Дата: Понедельник, 22.11.2021, 13:54 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 140
Репутация: 15 ±
Замечаний: 0% ±

Excel 2019
parovoznik, Доброго! Это я вам разве писал? Или что-то я пропустил?


Ученик - Наблюдатель. Учиться Никогда не поздно.
 
Ответить
Сообщениеparovoznik, Доброго! Это я вам разве писал? Или что-то я пропустил?

Автор - MikeVol
Дата добавления - 22.11.2021 в 13:54
MikeVol Дата: Понедельник, 22.11.2021, 15:42 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 140
Репутация: 15 ±
Замечаний: 0% ±

Excel 2019
nespica2012, Обратите Внимание в
Сообщение № 5
изменил код и изменил сам Файл.


Ученик - Наблюдатель. Учиться Никогда не поздно.
 
Ответить
Сообщениеnespica2012, Обратите Внимание в
Сообщение № 5
изменил код и изменил сам Файл.

Автор - MikeVol
Дата добавления - 22.11.2021 в 15:42
nespica2012 Дата: Понедельник, 22.11.2021, 18:25 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

MikeVol, супер!
прошу прощения, что не ответил сразу, с интернетом на работе беда и не смог просмотреть файл.
то что надо!
после ввода в форму разносит по столбцам как надо hands

вопрос вдогонку, а можно ли теперь после внесения данных в таблицу, сформировать техкарту, при следующих условиях:
при совпадении номера изделия и номера партии -формируется одна техкарта на отдельный лист, по образцу как на первом листе.
 
Ответить
СообщениеMikeVol, супер!
прошу прощения, что не ответил сразу, с интернетом на работе беда и не смог просмотреть файл.
то что надо!
после ввода в форму разносит по столбцам как надо hands

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

Автор - nespica2012
Дата добавления - 22.11.2021 в 18:25
китин Дата: Вторник, 23.11.2021, 09:13 | Сообщение № 10
Группа: Модераторы
Ранг: Экселист
Сообщений: 6611
Репутация: 1004 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
nespica2012, - Прочитайте Правила форума
- п.4 Правил форума: один вопрос - одна тема


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
Сообщениеnespica2012, - Прочитайте Правила форума
- п.4 Правил форума: один вопрос - одна тема

Автор - китин
Дата добавления - 23.11.2021 в 09:13
nespica2012 Дата: Вторник, 23.11.2021, 20:03 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

MikeVol, добрый вечер,

возможно ли дополнить форму сохранять данные в вводимых полях, чтобы каждый раз не вводить по новой, например, после нажатия кнопки "заполнить" появлялось сообщение "ввести еще данные" и в этом случае поля остаются заполненными, чтобы ускорить процесс ввода значений. или может быть другой способ?
 
Ответить
СообщениеMikeVol, добрый вечер,

возможно ли дополнить форму сохранять данные в вводимых полях, чтобы каждый раз не вводить по новой, например, после нажатия кнопки "заполнить" появлялось сообщение "ввести еще данные" и в этом случае поля остаются заполненными, чтобы ускорить процесс ввода значений. или может быть другой способ?

Автор - nespica2012
Дата добавления - 23.11.2021 в 20:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » автоматизация ввода (пользов форма) и создание техкарт (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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