1、
Dim nr As DataRow = DataTables("安全费用提取").Find(filter)
改成
Dim nr As DataRow = DataTables("安全费用提取").Find(filter, 1)
2、
Tables("安全费用提取").Current.Delete
e.datarow.Delete
3、尽量不要在datacolchanged事件删除行,不然如果你有代码循环给各列赋值,都会报错(你删除行了,再赋值,自然报错)