【发布时间】:2018-09-11 12:34:37
【问题描述】:
继我今天提出的上一个问题之后 - 我修改了 Roy Cox 编写的代码(感谢您为我节省了这么多时间!),以创建一个用户表单来在分析工具中添加、修改和删除用户的详细信息我正在创作。
在单个工作表上处理用户数据时效果很好。
选择一个用户并单击“删除”会删除他们在工作表上的用户数据。我已经修改了代码,以便在添加或删除用户时,它应该检查每个工作表并相应地添加或删除行。
这是删除单张瞳孔数据的代码:
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行的数据。它根本不会从下一个工作表中删除数据。
谁能给点建议?
【问题讨论】:
-
1) 您似乎没有根据您上次给出(并接受)的答案修改您的代码。 2) 其他工作表中要删除的行是否与 “查找按钮” 找到它的工作表中的行相同?
-
1) 你说得对 - 我很懒惰,复制了原帖,忘记修改代码 - 谢谢!
-
2) 是的,其他工作表将具有相同的用户列表。根据工作表收集的数据会有所不同。
-
2) 所以如果要在搜索到的工作表中删除第 23 行,那么所有其他工作表第 23 行也将被删除?
-
是的,没错。
标签: excel vba delete-row