如果同一行中的相应范围不为空,则 VBA 突出显示单元格

如果同一行中的相应范围不为空,则 VBA 突出显示单元格

如果 D 列至 DX(数量)中有任何值,我会尝试在文件的 B 列中强制显示食物名称。

合理的方法是,如果收到任何新的食品请求,而该请求未出现在文件中,用户可以暂时输入食品名称,然后输入数量。这是为了确保操作员不会输入错误值或忘记传达他们添加的新项目的信息。

是否可以添加一个按钮,用于检查从 D6 到 DX98 的所有工作表,如果发现任何数量,则将 C 中的相应单元格标记为红色,并出现一个简单的 MsgBox 提示文件中有错误。

我正在处理的文件是这样的: http://s000.tinyupload.com/?file_id=00523976624440052148

答案1

打开宏/Visual Basic,双击工作表并在右侧插入此代码:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim wkb As Workbook
Dim wks As Worksheet
Dim wksRange As Range
Set wkb = ThisWorkbook
Set wks = ActiveSheet
For i = 6 To 98 ' rows to be sweeped
    Set wksRange = wks.Range(Cells(i, 4), Cells(i, 127)) ' check from column 4 (D) to 127(DW)
    'Paint grey cells on columns A to C
    color_cell_a = Cells(i, 1).Interior.Color
    Cells(i, 2).Interior.Color = color_cell_a
    Cells(i, 3).Interior.Color = color_cell_a
    'If on the row there are values
    If WorksheetFunction.CountA(wksRange) <> 0 Then
        itemName = Cells(i, 2)
        itemPrice = Cells(i, 3)
        'Change color on column B
        If itemName = "" Then
            Cells(i, 2).Interior.Color = RGB(184, 0, 0)
        End If
        'Change color on column C
        If itemPrice = "" Then
            Cells(i, 3).Interior.Color = RGB(184, 0, 0)
        End If
    End If
Next i
End Sub

它检查覆盖的区域D6:DW98,以及行上是否有值项目名单价,它会将这些单元格标记为红色,直到您在其上写下任何内容。

如果您想定制,代码很容易修改。

相关内容