Excel 如何阻止/清除与VBA中的条件if语句匹配的列中每个单元格的数据?

Excel 如何阻止/清除与VBA中的条件if语句匹配的列中每个单元格的数据?,excel,vba,if-statement,Excel,Vba,If Statement,我是excel中VBA编程的新手,想知道如何做以下事情(我已经搜索了google,并将在这里用示例代码发布我尝试过的内容) G列从G11开始一直到工作表末尾,包含两个值:“全职”或“兼职” 在S列中,从S11开始,一直持续到表的末尾,我们的会计师将输入美元值。会计希望G列中的excel单元格能够阻止/清除任何数据,并弹出一条消息,说明“您无法编辑G列中的此单元格,因为该员工是兼职人员” 我使用了这段代码,但它只适用于第11行。我希望这适用于G列中的每一行。您有任何指示或提示吗?提前谢谢。 我使用

我是excel中VBA编程的新手,想知道如何做以下事情(我已经搜索了google,并将在这里用示例代码发布我尝试过的内容)

G列从G11开始一直到工作表末尾,包含两个值:“全职”或“兼职”

在S列中,从S11开始,一直持续到表的末尾,我们的会计师将输入美元值。会计希望G列中的excel单元格能够阻止/清除任何数据,并弹出一条消息,说明“您无法编辑G列中的此单元格,因为该员工是兼职人员”

我使用了这段代码,但它只适用于第11行。我希望这适用于G列中的每一行。您有任何指示或提示吗?提前谢谢。 我使用两个事件更改和选择更改

Private Sub Worksheet_Change(ByVal Target As Range)
If [$G11] = "Part Time" Then
[$S11].Interior.ColorIndex = 34
[$S11].ClearContents
[$S11].Locked = True
Else
[$S11].Interior.ColorIndex = 12
[$S11].Locked = False
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If [$G11] = "Part Time" Then
[$S11].ClearContents
[$S11].Locked = True
Else
[$S11].Locked = False

End If
End Sub 

试试这个。我根据你写的东西做了一些假设,所以如果不太符合你的数据,请告诉我

Private Sub Worksheet_Change(ByVal Target As range)

If Not Intersect(Target, .Columns("S:S")) Is Nothing Then 'only do this if column S is changed

    Application.EnableEvents = False

    If range("G" & Target.Row) = "Part Time" Then

        With range("S" & Target.Row)
            .Interior.ColorIndex = 34
            .ClearContents
            .Locked = True
        End With

    Else

        With range("S" & Target.Row)
            .Interior.ColorIndex = 12
            .Locked = False
        End With

    End If

    Application.EnableEvents = True

End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As range)

If Not Intersect(Target, .Columns("S:S")) Is Nothing Then 'only do this if column S is changed

    Application.EnableEvents = False

    If range("G" & Target.Row) = "Part Time" Then

        With range("S" & Target.Row)
            .ClearContents
            .Locked = True
        End With

    Else
        range("S" & Target.Row).Locked = False

    End If

    Application.EnableEvents = True

End If

End Sub