excel - 标记所有不包含两个给定单词的单元格
问题描述
我正在编写一个代码,它应该在一个范围内用红色标记所有不包含单词"bel"
and的单元格"hsa"
。
Sub Check()
Range("c2:c49").Select
For Each cell In Selection
If (cell.Value <> "bel" Or cell.Value <> "hsa") Then
cell.Interior.Color = RGB(255, 0, 0)
End If
Next cell
End Sub
如果我只有一个论点,它会起作用。使用上面的两个参数,它将范围内的所有单元格标记为红色。
Or
运营商有错吗?
解决方案
请注意,此任务可以使用条件格式来解决,它的优点是如果数据更改会自动更新,您无需一遍又一遍地运行该过程。
以下只是为了改进您的编码:
避免在 Excel VBA 中使用 Select。• 而是直接使用范围并指定范围在哪个工作表中。如果您不这样做,Excel 会猜测您打算使用哪个工作表,它可能会失败:
For Each cell In Worksheets("MySheet").Range("C2:C49")
我建议始终激活
Option Explicit
并声明所有变量。这是一个非常好的做法,可以防止许多错误:在 VBA 编辑器中,转到Tools › Options › Require Variable Declaration。您的实际问题是,如果您想排除两者
"bel"
,"hsa"
然后(当然)您需要使用And
运算符。Cell.Value <> "bel" And Cell.Value <> "hsa"
请注意
<>
vs=
总是改变操作符的逻辑or/and
。或者,您可以使用:Not (Cell.Value = "bel" Or Cell.Value = "hsa")
…这会给你同样的结果。使用对您来说更容易理解的那个。
所以你最终会得到类似的东西:
Option Explicit
Public Sub ValidateAndColorCells()
Dim CheckRange As Range
Set CheckRange = Worksheets("YourSheet").Range("C2:C49") 'Always specify the sheet!
Dim Cell As Range '<-- declare ALL your variables
For Each Cell In CheckRange
If Cell.Value <> "bel" And Cell.Value <> "hsa" Then
Cell.Interior.Color = RGB(255, 0, 0)
End If
Next Cell
End Sub
推荐阅读
- java - 运行这个 java 游戏循环代码来渲染图形正在扼杀性能
- docker - 为什么 docker system prune 没有删除悬空图像,而 docker rmi $(docker images --filter "dangling=true" -q --no-trunc) 没有
- c# - 仅用于一个控制器的 Web API 缓存 DLL 和符号文件
- java - 流的收集功能中组合器的用途是什么?
- r - 如何让 R 代码等待后台 R 会话完成?
- javascript - 模态关闭后停止 jQuery 函数
- pandas - 我想拆分字符串并只保留第一个单词
- swift - 如何从 SwiftUI 中的导航栏按钮单击导航到新视图
- java - 错误:针对 Android API 28 时找不到符号变量 CLIP_SAVE_FLAG
- jquery - 如何仅捕获文本但忽略带有元素的文本?