После некоторых поисков и попыток разобраться в себе я в тупике. Мне бы пригодилась помощь по этому поводу.
У меня есть книга Excel с несколькими вкладками. Мне нужна помощь с двумя вкладками «KronosEntries» и «MASTER». На вкладке МАСТЕР есть список всех пропущенных дней и отпусков сотрудника. На вкладке KronosEntries есть список всех записей из вкладки MASTER, которые необходимо ввести в Kronos. Как только они будут введены в Kronos, я поставлю галочку рядом с этой строкой, чтобы удалить ее со вкладки KronosEntries. Когда я добавляю новую строку на вкладке MASTER, она автоматически добавляет «Нет» в столбец R. Я хочу, чтобы когда я установил флажок на вкладке KronosEntries, я хочу изменить столбец R на вкладке MASTER на «Да» для строки с такими же данными.
Вот пример вкладки KronosEntries.
![KronosEntries](https://i.stack.imgur.com/kJ11y.jpg)
Вот пример вкладки MASTER.
![MasterTab](https://i.stack.imgur.com/A2dms.jpg)
Вот что я использовал для добавления флажков.
Sub Addcheckboxes()
'Declare variables and data types
Dim cell, LRow As Single
Dim ChkBx As CheckBox
Dim CLeft, CTop, CHeight, CWidth As Double
'Don't refresh or update screen while processing macro, this will make the macro quicker.
Application.ScreenUpdating = False
'Find last non empty cell in column A
LRow = Worksheets("KronosEntries").Range("A" & Rows.Count).End(xlUp).Row
'Iterate through 2 to last non empty cell
For cell = 2 To LRow
'Check if cell in column B is not equal to nothing
If Cells(cell, "B").value <> "" And Cells(cell, "B").value <> "Employee ID" Then
'Save cell dimensions and coordinates of corresponding cell in column E to variables
CLeft = Cells(cell, "A").Left
CTop = Cells(cell, "A").Top
CHeight = Cells(cell, "A").Height
CWidth = Cells(cell, "A").Width
'Create checkbox based on dimension and coordinates data from variables
Worksheets("KronosEntries").CheckBoxes.Add(CLeft, CTop, CWidth, CHeight).Select
With Selection
.Caption = ""
.value = xlOff
.LinkedCell = .TopLeftCell.Offset(0, 8).Address
.Display3DShading = False
End With
End If
Next cell
Worksheets("KronosEntries").Range("A6").Select
'Turn on screen refresh
Application.ScreenUpdating = True
End Sub
Вот что я использовал для удаления флажков.
Sub RemoveCheckboxes()
'Declare variables and data types
Dim ChkBx As CheckBox
'Iterate through all check boxes on active sheet
For Each ChkBx In Worksheets("KronosEntries").CheckBoxes
'Remove checkbox
ChkBx.Delete
'Continue with next checkbox
Next
End Sub
Часть, которую я не могу Кажется, разобраться, это код для изменения столбца R на Да для строки с теми же данными. Может кто поможет? Спасибо
Я поместил последний код, который у меня не работает, ниже. Даже не уверен, что я на правильном пути. Я вызываю подпрограмму ChangeData в Worksheet_Calculate.
Sub ChangeData
For Each ChkBx In Worksheets("KronosEntries").CheckBoxes
'If check box is enabled
If ChkBx.value = 1 Then
'Go through each row on worksheet
For r = 1 To Rows.Count
'Check if checkbox is on the same row
If Cells(r, 1).Top = ChkBx.Top Then
'Sheet to change value in.
With Worksheets("MASTER")
Worksheets("MASTER").Range("R" & r) = Worksheets("KronosEntries").Range("L" & r).value
End With
'Exit For Loop
Exit For
End If
Next r
End If
Next
End Sub