Прошу помощи в создании макроса для формы которая находит нужную строку по условию месяц, имя специалиста, имя ребенка и добавляет в ячейку "Количество посещённых занятий" единицу и при каждом нажатии в форме на кнопку запись увеличивала число ячейке на 1 Версия Exel 2016
Очень нужно прошу помочь!!!
Здравствуйте Профи!
Прошу помощи в создании макроса для формы которая находит нужную строку по условию месяц, имя специалиста, имя ребенка и добавляет в ячейку "Количество посещённых занятий" единицу и при каждом нажатии в форме на кнопку запись увеличивала число ячейке на 1 Версия Exel 2016
Ну, примерно так. Делаете общий модуль, например, 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")
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]
Ну, примерно так. Делаете общий модуль, например, 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")