如何解决VBA-如何仅将范围内的脚本应用于包含特定值的行
在这里,我有这个vba脚本,当我单击它时,它将一个单元格的值更改为1,并将该单元格的颜色和字体更改为浅绿色。我有一年中每个星期的日历,每个条目都分为计划和负载,我希望我的脚本仅在计划的行上工作(以后会添加新数据,所以我不能逐行指定每一行)。
这是该脚本现在的查找方式,但是我必须指定我要将其应用于的行:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target,Range("F2:BE2")) Is Nothing Then
If Target.Value = 1 Then
Target.Value = ""
Target.Interior.ColorIndex = 0
Else
Target.Value = 1
Target.Interior.ColorIndex = 35
Target.Font.ColorIndex = 35
End If
End If
End Sub
在这种情况下,第2行是用于计划的行之一,通过单击从F到BE的单元格,将值设置为1,并将单元格的颜色和字体更改为浅绿色。我有一个公式可以将负载划分为已激活的计划周数。
这是我想要它做的一个简单示例:
感谢您的帮助!
解决方法
我不太了解格式的逻辑,但是下面的代码应该可以帮助您入门。
阅读评论并调整范围和文本以适合您的需求。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Range that you're going to monitor
Dim targetRange As Range
Set targetRange = Me.Range("D2:BE10")
' Column that has keyword
Dim keyColumn As String
keyColumn = "B"
' Text in key column
Dim keyText As String
keyText = "Planning"
' Just for one cell
If Target.Count > 1 Then Exit Sub
' Just in monitored range
If Intersect(Target,targetRange) Is Nothing Then Exit Sub
' Just if key column has specific text
If Not Me.Cells(Target.Row,keyColumn).Value2 = keyText Then Exit Sub
' Do other stuff
If Target.Value = 1 Then
Target.Value = ""
Target.Interior.ColorIndex = 0
Else
Target.Value = 1
Target.Interior.ColorIndex = 35
Target.Font.ColorIndex = 35
End If
End Sub
让我知道它是否有效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。