我是新手的VBA编程在excel中,想知道如何做以下(我已经搜索了谷歌,并将我已经尝试在这里与样本代码)。
列G从G11开始,一直到工作表的末尾,包含两个值:“全职”或“兼职”。
在S列中,从S11开始,一直到工作表的末尾,我们的会计将输入一个美元值。
我使用了这段代码,但它只适用于第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 发布于 2013-01-11 05:00:43
试试这个。我根据你写的东西做了一些假设,所以如果它不太符合你的数据,请告诉我。
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 Subhttps://stackoverflow.com/questions/14266187
复制相似问题