Excel 宏检查单元格是否为空并在列中搜索特定单词
Excel Macro check if cell is empty and search specific word in column
伙计,我是 VBA 语言的初学者,我有一个问题要解决。
如何制作一个宏脚本来检查 B 列的 ANY 行是否是“C”的输入词 AND ANY 行C列为空,则触发用颜色高亮显示该行,并弹出消息框提醒用户更正。
另外,D列正在使用公式和逐个单元格的方法来检查上述要求。
=IF(ISBLANK(B4),"",IF(OR(B4="C",B4="O"),IF(AND(B4="C", ISBLANK(C4)),"WARNING: Case Closed! Please Write Down Resolution!",""),"ERROR: Invalid Value - Status! Please Input The Right Value!"))
例如第 4 行符合要求并受到影响。
有办法吗?
请帮忙。谢谢。
更新:感谢 Variatus!
当我保存文件时,它会弹出这个消息框。我能做些什么?谢谢。
微距画面
错误
在正常情况下,你会被要求更多地表现出自己的努力,然后才能得到本论坛的帮助,包括来自我的帮助。但显然情况不正常。所以,我们开始吧。将此过程粘贴到标准代码模块(默认情况下,它的名称将是 Module1 的变体)。
Option Explicit
Sub MarkErrors()
' 283
Dim Spike() As String
Dim i As Long ' index of Spike
Dim Rl As Long ' last used row
Dim R As Long ' loop counter: rows
Application.ScreenUpdating = False
With Sheet1 ' this is the sheet's CodeName (change to suit)
.UsedRange.Interior.Pattern = xlNone ' remove all existing highlights
Rl = .Cells(.Rows.Count, "A").End(xlUp).Row
ReDim Spike(1 To Rl)
For R = 2 To Rl
If Trim(.Cells(R, "B").Value) = "C" Then
If IsEmpty(.Cells(R, "C")) Then
.Range(.Cells(R, "A"), .Cells(R, "D")).Interior.Color = vbYellow
i = i + 1
Spike(i) = "Row " & R
End If
End If
Next R
End With
Application.ScreenUpdating = True
If i Then
ReDim Preserve Spike(1 To i)
MsgBox "Status errors were found in the following entries:-" & vbCr & _
Join(Spike, "," & vbCr), vbInformation, "Corrections required"
End If
End Sub
关注指定作业sheetSheet1
。这是一个 CodeName,并且是默认值。 Excel 将在您创建工作簿时使用该名称创建一个 sheet。当用户更改选项卡名称时,CodeName 不会更改,但您可以在 VB 编辑器中更改它。是作品的(Name)
属性sheet.
在 Sheet1
的代码 sheet 中安装以下程序(不是标准代码模块,因此与安装上述代码的位置不同。此模块由 Excel 每个工作簿中的每个 sheet。使用现有的。
Private Sub Worksheet_Activate()
' 283
MarkErrors
End Sub
这是一个事件过程。只要 Sheet1
被激活(选择),它就会自动 运行。因此,在正常情况下,您永远不需要手动 运行 第一个过程。但我已经谈到了情况。他们并不总是正常的。 :-)
伙计,我是 VBA 语言的初学者,我有一个问题要解决。
如何制作一个宏脚本来检查 B 列的 ANY 行是否是“C”的输入词 AND ANY 行C列为空,则触发用颜色高亮显示该行,并弹出消息框提醒用户更正。
另外,D列正在使用公式和逐个单元格的方法来检查上述要求。
=IF(ISBLANK(B4),"",IF(OR(B4="C",B4="O"),IF(AND(B4="C", ISBLANK(C4)),"WARNING: Case Closed! Please Write Down Resolution!",""),"ERROR: Invalid Value - Status! Please Input The Right Value!"))
例如第 4 行符合要求并受到影响。
有办法吗? 请帮忙。谢谢。
更新:感谢 Variatus!
当我保存文件时,它会弹出这个消息框。我能做些什么?谢谢。
微距画面
错误
在正常情况下,你会被要求更多地表现出自己的努力,然后才能得到本论坛的帮助,包括来自我的帮助。但显然情况不正常。所以,我们开始吧。将此过程粘贴到标准代码模块(默认情况下,它的名称将是 Module1 的变体)。
Option Explicit
Sub MarkErrors()
' 283
Dim Spike() As String
Dim i As Long ' index of Spike
Dim Rl As Long ' last used row
Dim R As Long ' loop counter: rows
Application.ScreenUpdating = False
With Sheet1 ' this is the sheet's CodeName (change to suit)
.UsedRange.Interior.Pattern = xlNone ' remove all existing highlights
Rl = .Cells(.Rows.Count, "A").End(xlUp).Row
ReDim Spike(1 To Rl)
For R = 2 To Rl
If Trim(.Cells(R, "B").Value) = "C" Then
If IsEmpty(.Cells(R, "C")) Then
.Range(.Cells(R, "A"), .Cells(R, "D")).Interior.Color = vbYellow
i = i + 1
Spike(i) = "Row " & R
End If
End If
Next R
End With
Application.ScreenUpdating = True
If i Then
ReDim Preserve Spike(1 To i)
MsgBox "Status errors were found in the following entries:-" & vbCr & _
Join(Spike, "," & vbCr), vbInformation, "Corrections required"
End If
End Sub
关注指定作业sheetSheet1
。这是一个 CodeName,并且是默认值。 Excel 将在您创建工作簿时使用该名称创建一个 sheet。当用户更改选项卡名称时,CodeName 不会更改,但您可以在 VB 编辑器中更改它。是作品的(Name)
属性sheet.
在 Sheet1
的代码 sheet 中安装以下程序(不是标准代码模块,因此与安装上述代码的位置不同。此模块由 Excel 每个工作簿中的每个 sheet。使用现有的。
Private Sub Worksheet_Activate()
' 283
MarkErrors
End Sub
这是一个事件过程。只要 Sheet1
被激活(选择),它就会自动 运行。因此,在正常情况下,您永远不需要手动 运行 第一个过程。但我已经谈到了情况。他们并不总是正常的。 :-)