入库管理 删除
1 功能描述
填写入库单编写,点击[删除入库单]按钮。
操作结果:删除主表[A0501入库]的一条记录,删除从表[A0502入库明细]的N条记录。
2 主要步骤
步骤1:删除主表[A0501入库]中的数据
步骤2:删除从表[A0502入库明细]中的数据
3 完整代码
Sub del()
Dim rowsCount, rowIndexNew As Integer
Dim idCell As Range
Dim flag As Boolean
flag = False
'获取要查找的ID
id = Worksheets("B05入库管理").Range("B5").Value
'步骤1:删除主表[A0501入库]中的数据
'通过当前区域获取新行的行号
rowIndexLast = Worksheets("A0501入库").Range("A1").CurrentRegion.Rows.Count
Debug.Print "rowIndexLast:" & rowIndexLast
'查找单元格
Set idCell = Worksheets("A0501入库").Range("A2:A" & rowIndexLast).Find(id, lookat:=xlWhole)
If idCell Is Nothing Then
MsgBox "id不存在,无法删除。id:" & id
Exit Sub
End If
'删除行
idCell.EntireRow.delete
'步骤2:删除从表[A0502入库明细]中的数据
rowIndex = 2
Do While Not IsEmpty(Worksheets("A0502入库明细").Range("A" & rowIndex).Value)
If Worksheets("A0502入库明细").Range("A" & rowIndex).Value = id Then
Worksheets("A0502入库明细").Rows(rowIndex).delete
Else
rowIndex = rowIndex + 1
End If
Loop
MsgBox "删除成功。", Title:="小步教程www.xiaobuteach.com"
End Sub
4 代码讲解
因为从表中需要删除多条记录,所以无法一直次调用Find来查找删除,通过While来遍历删除。
rowIndex = rowIndex + 1在删除时不需要,因为删除后,下一行会移到当前行,所以rowIndex无需改变。否则可能会出现跳行删除的情况。
5 测试用例
正常用例:ID存在时,主表删除一条记录,明细表删除N条记录。
异常用例:ID不存在时,提示“id不存在,无法删除。id:* * * * * *”