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

我是在Excel中的VBA编程新手,想知道如何做以下(我已经search谷歌,并会发布我已经试过这里的示例代码)。

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

在S列中,从S11开始一直持续到表格末尾,我们的会计师将input美元值。 会计师希望G列中的Excel单元格阻止/清除任何数据,并popup一个消息,说:“您不能在G列中编辑此单元格,因为员工是兼职人员”。

我使用了这个代码,但它只适用于第11行。我希望这适用于G列的每一行。你有任何指针或提示? 提前致谢。 我使用2个事件Change和SelectionChange

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