Для контекста я создаю базу данных пользователей и их хобби.Пользователи вводят свои данные через UserForm1, вводя свое имя, затем отмечая большое количество флажков, представляющих различные хобби.После отправки это сохраняется на листе, где каждый пользователь отображается в виде строки (имя в виде строки, флажки в виде значений true / false), а пользователю присваивается идентификационный номер.
В UserForm2 пользователи вводят своиИдентификационный номер, чтобы вернуть свою запись, чтобы они могли обновить свои собственные данные.Я хочу добавить макрос, который ищет их записи по идентификационному номеру, и возвращает UserForm1 с отмеченными / снятыми флажками, соответствующими значениям да / нет (как и первый макрос в обратном порядке).Затем пользователь должен иметь возможность ставить / снимать флажки, чтобы обновить свою запись и сохранить поверх своих старых данных.
Это код для UserForm1 (пользователи вводят свои данные в лист):
Private Sub saveAndCloseCommandButton_Click()
'When user clicks Save & Quit, save record as row
Dim lRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Sheet3")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
.Cells(lRow, 1).Value = nameTextBox.Value
.Cells(lRow, 2).Value = deptTextBox.Value
.Cells(lRow, 3).Value = notesTextBox.Value
'.Cells(1Row, 4) contains ID so do not write data to this column
'Give ID number to the user via MsgBox.
MsgBox "Saved. Your Skills Database ID is " & .Cells(lRow, 4) & ". Remember this!", VBA.VbMsgBoxStyle.vbOKOnly
'Populate the spreadsheet based on which skills the user selected, as TRUE (checkbox ticked) or FALSE (unticked).
.Cells(lRow, 5).Value = CheckBox1.Value
.Cells(lRow, 6).Value = CheckBox2.Value
...and so on, until
.Cells(lRow, 151).Value = CheckBox148.Value
End With
Call resetForm
'Close the form after saving
Unload Me
End If
End If
End Sub
'This is all the stuff that happens when the form resets (called above).
'The checkboxes should auto-untick.
Private Sub resetForm()
'Set all text boxes to blank
nameTextBox.Value = ""
deptTextBox.Value = ""
notesTextBox.Value = ""
'Set Focus on the Name text box
UserForm1.nameTextBox.SetFocus
End Sub