Исходя из предыдущего вопроса, который я задал сегодня - я изменил код, написанный Роем Коксом (спасибо, что сэкономили мне так много времени!), Чтобы создать пользовательскую форму для добавления, изменения и удаления сведений о пользователях в инструменте анализа I создаю.
Отлично работает при работе с пользовательскими данными на одном листе.
Выбор пользователя и нажатие «удалить» удаляет его пользовательские данные на рабочем листе. Я изменил код, чтобы при добавлении или удалении пользователя он проверял каждый лист и соответственно добавлял или удалял строки.
Это код для удаления данных ученика на одном листе:
Private Sub cmbDelete_Click()
Dim msgResponse As String 'confirm delete
Application.ScreenUpdating = False
'get user confirmation
msgResponse = MsgBox("This will delete the selected record. Continue?", _
vbCritical + vbYesNo, "Delete Entry")
Select Case msgResponse 'action dependent on response
Case vbYes
'c has been selected by Find button on UserForm
Set c = ActiveCell
c.EntireRow.Delete 'remove entry by deleting row
'restore form settings
With Me
.cmbAmend.Enabled = False 'prevent accidental use
.cmbDelete.Enabled = False 'prevent accidental use
.cmbAdd.Enabled = True 'restore use
'clear form
Call ClearControls
End With
Case vbNo
Exit Sub 'cancelled
End Select
Application.ScreenUpdating = True
End Sub
Я попытался изменить его, чтобы удалить пользовательские данные на каждом листе, следующим образом:
Private Sub cmbDelete_Click()
Dim Sh As Worksheet
Dim msgResponse As String 'confirm delete
Application.ScreenUpdating = False
'get user confirmation
msgResponse = MsgBox("This will delete the selected record. Continue?", _
vbCritical + vbYesNo, "Delete Entry")
Select Case msgResponse 'action dependent on response
Case vbYes
For Each Sh In ThisWorkbook.Sheets
With Sh.UsedRange
'c has been selected by Find button
Set c = ActiveCell
c.EntireRow.Delete 'remove entry by deleting row
End With
Next
'restore form settings
With Me
.cmbAmend.Enabled = False 'prevent accidental use
.cmbDelete.Enabled = False 'prevent accidental use
.cmbAdd.Enabled = True 'restore use
'clear form
Call ClearControls
End With
Case vbNo
Exit Sub 'cancelled
End Select
Application.ScreenUpdating = True
End Sub
но эта версия удаляет данные пользователя и данные в 4 строках под ними. Он вообще не удаляет данные из следующего листа.
Может кто-нибудь дать какой-нибудь совет, пожалуйста?