Фрагмент кода, который вы показали, записывает идентификатор на лист. Чтобы удалить его, нужно найти его и очистить ячейку, в которой он находится. Это действие можно выполнить либо до вызова Unload Me
, либо после него. Код, который у вас есть, нуждается в некоторых модификациях:
Private Sub btnAMLogout_Click()
If MsgBox("Are you sure ...", vbYesNo) = vbYes Then
Unload Me
' Let's say the new code goes here. The last ID (whichever it is) will be removed.
With Worksheets("AMChoices")
LastRow = .Range("B" & .Rows.CountLarge).End(xlUp).Row ' no need for: + 1
If LastRow < 3 Then Exit Sub ' no need for: LastRow = 3
.Cells(LastRow, "b") = "" ' no need for: WorksheetFunction.Proper(ID)
End With
End If
End Sub
Теперь, поскольку вы упомянули нескольких пользователей, это может быть немного сложнее, потому что вам нужно найти ячейку с соответствующим идентификатором (это может быть не последний!), А затем удалить ее. «Удаление» может быть просто опустошением ячейки (как указано выше) или удалением всей строки этой ячейки, или чем-то еще - я недостаточно хорошо знаю вашу ситуацию, чтобы сказать, что это такое.
В любом случае, чтобы найти последнее вхождение этого идентификатора в столбце «B: B», необходимо проверить ячейки в столбце, чтобы иметь этот идентификатор, начиная с последней и повышаясь, по одной ячейке за раз, что-то вроде
For i = LastRow to 3 Step -1
If .Cells(i, "B") = WorksheetFunction.Proper(ID) Then
.Rows(i).Delete
Exit For
End If
Next
Я очень надеюсь, что это поможет.