Поиск идентификатора на листе и возврат строки в пользовательской форме - PullRequest
0 голосов
/ 13 июня 2019

Для контекста я создаю базу данных пользователей и их хобби.Пользователи вводят свои данные через 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
...