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

Вход

Регистрация

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

 

= Мир MS Excel/Счетчик занятий ребенка со специалистом прошу помощи! - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Счетчик занятий ребенка со специалистом прошу помощи! (Макросы/Sub)
Счетчик занятий ребенка со специалистом прошу помощи!
Dimchec Дата: Пятница, 10.03.2023, 19:12 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 20% ±

2016
Здравствуйте Профи!

Прошу помощи в создании макроса для формы которая находит нужную строку по условию месяц, имя специалиста, имя ребенка и добавляет в ячейку "Количество посещённых занятий" единицу и при каждом нажатии в форме на кнопку запись увеличивала
число ячейке на 1
Версия Exel 2016

Очень нужно прошу помочь!!!
К сообщению приложен файл: forma.xlsm (22.4 Kb)


DIMCHEC
 
Ответить
СообщениеЗдравствуйте Профи!

Прошу помощи в создании макроса для формы которая находит нужную строку по условию месяц, имя специалиста, имя ребенка и добавляет в ячейку "Количество посещённых занятий" единицу и при каждом нажатии в форме на кнопку запись увеличивала
число ячейке на 1
Версия Exel 2016

Очень нужно прошу помочь!!!

Автор - Dimchec
Дата добавления - 10.03.2023 в 19:12
Gustav Дата: Пятница, 10.03.2023, 22:30 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2697
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Ну, примерно так. Делаете общий модуль, например, Module1 с таким содержанием:
[vba]
Код
Option Explicit

Public fldM As Object
Public fldS As Object
Public fldR As Object

Sub ShowPoseshenie()
    On Error Resume Next
    'ОЧИСТКА ПОЛЕЙ ФОРМЫ ПЕРЕД ПОКАЗОМ
    fldR.Value = "" 'ребенок
    fldS.Value = "" 'сотрудник
    fldM.Value = "" 'месяц
    On Error GoTo 0
    Poseshenie.Show
End Sub
[/vba]

И затем в модуль формы Poseshenie помещаете такое содержание:
[vba]
Код
Public var      As Variant   'массив поиска для ПОИСКПОЗ
Public rngProp  As Range     'диапазон "Количество посещённых занятий "
Public rngNeed  As Range     'диапазон "Количество нужных занятий"

Private Sub ButtonZapis_Click()
    Dim pos As Long
    On Error Resume Next
    pos = WorksheetFunction.Match(Me.Naprov4ComboBox.Value & Me.fio_ComboBox2.Value & Me.fio_ComboBox.Value, var, 0)
    If Err Then
        Err.Clear
        pos = 0
    End If
    If pos > 0 Then
        If rngNeed.Cells(pos) > rngProp.Cells(pos) Then
            rngProp.Cells(pos) = rngProp.Cells(pos) + 1
            rngProp.Cells(pos).Select
        Else
            rngProp.Worksheet.Range(rngNeed.Cells(pos), rngProp.Cells(pos)).Select
            MsgBox "Количество нужных занятий уже равно количеству посещенных", vbExclamation, "Занятий достаточно"
        End If
        Me.Hide
    Else
        MsgBox "Строка с такими параметрами в таблице не найдена", vbExclamation, "Нет такой строки"
    End If
End Sub

Private Sub UserForm_Initialize()

    Dim wks     As Worksheet
    Dim lob     As ListObject
    
    Dim var1    As Variant
    Dim var2    As Variant
    Dim var3    As Variant
    
    Dim i       As Long

    Set wks = ActiveWorkbook.Worksheets("Отметка")
    Set lob = wks.ListObjects("Занятия_tb")

    var1 = lob.ListColumns("Месяц").Range.Value
    var = var1
    var2 = lob.ListColumns("ФИО сотрудника").Range.Value
    var3 = lob.ListColumns("Источник начисления").Range.Value

    For i = LBound(var) To UBound(var)
        var(i, 1) = var1(i, 1) & var2(i, 1) & var3(i, 1)
    Next i

    Set rngProp = lob.ListColumns("Количество посещённых занятий ").Range
    Set rngNeed = lob.ListColumns("Количество нужных занятий").Range
    
    Set fldR = Me.fio_ComboBox      'ребенок
    Set fldS = Me.fio_ComboBox2     'сотрудник
    Set fldM = Me.Naprov4ComboBox   'месяц
End Sub
[/vba]
К сообщению приложен файл: 2388431.xlsm (27.7 Kb)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Пятница, 10.03.2023, 22:54
 
Ответить
СообщениеНу, примерно так. Делаете общий модуль, например, Module1 с таким содержанием:
[vba]
Код
Option Explicit

Public fldM As Object
Public fldS As Object
Public fldR As Object

Sub ShowPoseshenie()
    On Error Resume Next
    'ОЧИСТКА ПОЛЕЙ ФОРМЫ ПЕРЕД ПОКАЗОМ
    fldR.Value = "" 'ребенок
    fldS.Value = "" 'сотрудник
    fldM.Value = "" 'месяц
    On Error GoTo 0
    Poseshenie.Show
End Sub
[/vba]

И затем в модуль формы Poseshenie помещаете такое содержание:
[vba]
Код
Public var      As Variant   'массив поиска для ПОИСКПОЗ
Public rngProp  As Range     'диапазон "Количество посещённых занятий "
Public rngNeed  As Range     'диапазон "Количество нужных занятий"

Private Sub ButtonZapis_Click()
    Dim pos As Long
    On Error Resume Next
    pos = WorksheetFunction.Match(Me.Naprov4ComboBox.Value & Me.fio_ComboBox2.Value & Me.fio_ComboBox.Value, var, 0)
    If Err Then
        Err.Clear
        pos = 0
    End If
    If pos > 0 Then
        If rngNeed.Cells(pos) > rngProp.Cells(pos) Then
            rngProp.Cells(pos) = rngProp.Cells(pos) + 1
            rngProp.Cells(pos).Select
        Else
            rngProp.Worksheet.Range(rngNeed.Cells(pos), rngProp.Cells(pos)).Select
            MsgBox "Количество нужных занятий уже равно количеству посещенных", vbExclamation, "Занятий достаточно"
        End If
        Me.Hide
    Else
        MsgBox "Строка с такими параметрами в таблице не найдена", vbExclamation, "Нет такой строки"
    End If
End Sub

Private Sub UserForm_Initialize()

    Dim wks     As Worksheet
    Dim lob     As ListObject
    
    Dim var1    As Variant
    Dim var2    As Variant
    Dim var3    As Variant
    
    Dim i       As Long

    Set wks = ActiveWorkbook.Worksheets("Отметка")
    Set lob = wks.ListObjects("Занятия_tb")

    var1 = lob.ListColumns("Месяц").Range.Value
    var = var1
    var2 = lob.ListColumns("ФИО сотрудника").Range.Value
    var3 = lob.ListColumns("Источник начисления").Range.Value

    For i = LBound(var) To UBound(var)
        var(i, 1) = var1(i, 1) & var2(i, 1) & var3(i, 1)
    Next i

    Set rngProp = lob.ListColumns("Количество посещённых занятий ").Range
    Set rngNeed = lob.ListColumns("Количество нужных занятий").Range
    
    Set fldR = Me.fio_ComboBox      'ребенок
    Set fldS = Me.fio_ComboBox2     'сотрудник
    Set fldM = Me.Naprov4ComboBox   'месяц
End Sub
[/vba]

Автор - Gustav
Дата добавления - 10.03.2023 в 22:30
Gustav Дата: Пятница, 10.03.2023, 22:41 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2697
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Ай-яй-яй, кросс... :(


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеАй-яй-яй, кросс... :(

Автор - Gustav
Дата добавления - 10.03.2023 в 22:41
Dimchec Дата: Пятница, 10.03.2023, 22:58 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 20% ±

2016
Мне честно на том форуме не отвечали, а макрос нужен уже завтра, БОЛЬШОЕ ВАМ СПАСИБО !! Все супер работает!


DIMCHEC
 
Ответить
СообщениеМне честно на том форуме не отвечали, а макрос нужен уже завтра, БОЛЬШОЕ ВАМ СПАСИБО !! Все супер работает!

Автор - Dimchec
Дата добавления - 10.03.2023 в 22:58
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Счетчик занятий ребенка со специалистом прошу помощи! (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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