用VB控制excel删除特定的单元格

A B C D E F G
1 位置5   0 0 0 0

2   A 1 2 3 0

3   B 4 5 6 0

4   C 7 8 9 0
如上表,我想当B列的单元格里出现“位置”的字符后,删除这个单元格后面5个单元格和下面一个单元格,这种情况如何实现?
我的数据是vb6.0写入的,我想在里面添加这个功能,vba都会报错

第1个回答  2015-05-12
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target) <> Len(Replace(Target, "位置", "")) Then
For i = 1 To 5
Cells(Target.Row, Target.Column + i).ClearContents
Next
Cells(Target.Row + 1, Target.Column).ClearContents
End If
End Sub追问

将ClearContents改为delete是我需要的,谢谢了。

但现在会出现报错,数据也写不进去

追答

Private Sub Worksheet_Change(ByVal Target As Range)
If InStr(1, Cells(Target.Row, Target.Column), "位置") > 0 Then
Sheet1.Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row, Target.Column + 5)).Select
Selection.Delete Shift:=xlToLeft
Cells(Target.Row + 1, Target.Column).Delete Shift:=xlUp
Cells(Target.Row, Target.Column).Select
End If
End Sub

追问

我的数据是vb6.0写入的,我想在里面添加这个功能。

第2个回答  2015-05-12
病情分析:
你好,根据你的描述,每周都要用精油做美体,月经刚开始紊乱,现在彻底闭经了,三个月都不来,37岁考虑可能与精油有关,是月经紊乱。
指导意见:
你好,建议你去医院妇科就诊,根据检查结果对症处理,不要盲目治疗。
第3个回答  推荐于2016-06-01
Sub 清除()

For Each rng In Range("a1:z10")

    If rng = "位置" Then

        Range(Cells(rng.Row, rng.Column + 1), Cells(rng.Row, rng.Column + 5)) = ""

        rng.Offset(1, 0) = ""

    End If

Next

End Sub

追问

是删除单元格,不是清除内容

追答Sub 清除()
For Each rng In Range("a1:z10")
    If rng = "位置" Then
        Range(Cells(rng.Row, rng.Column + 1), Cells(rng.Row, rng.Column + 5)).Delete Shift:=xlToLeft
    rng.Offset(1, 0).Delete Shift:=xlToLeft
    End If
Next
End Sub

追问

我的数据是vb6.0写入的,我想在里面添加这个功能。

追答

我的代码是在Excel中写的……

本回答被提问者采纳
大家正在搜