在excel表中,如果有人试图操纵我的标准数据,则要更改特定单元格的颜色

时间:2014-11-15 19:16:52

标签: excel excel-formula data-manipulation

我的Excel“优先级”,“可用性”和“周转时间”中有3列 如果我在优先级列下输入“高”,它将根据预定义的标准和公式自动填充其余列(“可用性”为24X7,“周转时间”为4小时)。如果有人操纵数据,例如将“可用性”从4小时更改为6小时或其他不同于标准的值,我想将单元格颜色更改为红色。提前感谢解决方案。

2 个答案:

答案 0 :(得分:1)

如果以这种方式覆盖单元格公式,则可能会出现问题。你会以某种方式需要更换公式。如何不首先改变公式?

假设以下布局和单元格公式=IF(B3="High","4 hours","")在单元格D3中:

enter image description here

那么这样的事情怎么样:

Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$D$3" Then
            If Not (Range("B3").Value = "High" And Range("D3").Value = "4 hours") Then
                qm = Chr(34)
                Range("D3").Formula = "=IF(B3=" & qm & "High" & qm & "," & qm & "4 hours" & qm & "," & qm & qm & ")"
            End If
        End If
End Sub

此代码应放在有问题的Sheet模块中,而不是标准模块中。

编辑对OP OPMENT的回应

正如其名称所示,条件格式化涉及格式化而不涉及单元格的内容。如果您接受不允许覆盖公式的前提,那么您可以考虑在工作表上“锁定”该特定单元格。这样,用户将无法修改单元格或其内容。

有关详细信息,请查看this link

答案 1 :(得分:0)

使用您要评估的工作表中的'私有子工作表_更改(按范围目标为范围)`事件。 示例:如果有人修改了单元格J2的值,请将文本颜色更改为红色。

Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$J$2" Then
            Range("J2").Font.Color = RGB(255, 0, 0)
        End If
End Sub

使用条件格式:

Assuming the cell where you want to apply conditional formatting is: B2.

1.Select the cell or cells where you want to apply conditional formatting.
2.Then, click Home > Conditional Formatting > New Rule. 
3.In the New Formatting Rule dialog box, click Use a formula to determine which cells to format.
4.Under Format values where this formula is true, type the formula: =AND($B$2<>"24x7",$B$2 <>"20x7")
The formula uses the AND function to see if the cell B2 is different from the common values: "24x7", "20x7",... [You can keep adding more values separated by commas in the AND function]
 If so, the cells are formatted. 
5.Click Format.
6.In the Color box, select Red. In the Font Style box, select Bold.