【发布时间】:2019-05-01 11:08:01
【问题描述】:
我正在处理向用户提供默认值的电子表格。我有这些格式(白色背景/黑色文本)。
我设置了一个宏,以便在编辑值时将单元格格式化为突出显示(黄色背景/粗体文本)。
我正在尝试在输入每个单元格时捕获其原始值(或 Value2?),以便如果用户更改值,它将使用我设置的条件格式宏突出显示该单元格,但如果它们恢复原来突出显示的值消失了。
例如,我有一个“名字”列,其中包含一个“斯蒂芬”单元格。如果用户编辑该单元格以说出“Joe”,它将突出显示以表明它已被编辑并且不再是默认值。如果用户随后编辑单元格以再次说出“斯蒂芬”,则新值将匹配原始的、未编辑的值,并且条件格式(突出显示)将被删除。
我已经阅读了一些教程here,但是没有修改以满足我的需求的教程会抛出错误。
我尝试将值设置为变量,但似乎没有帮助。
Dim myCellValue As Variant
myCellSetValue.Value = Range.Value2
这是我现在使用的宏。无论编辑如何,它都会在单击每个单元格后立即更改其格式。
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Interior.ColorIndex = 36
Target.Font.FontStyle = "Bold"
End Sub
我需要
1. 仅在值更改时应用此格式
2. 如果单元格的值与原始值匹配,则删除此格式
另外,有没有办法“一键还原”单元格的原始值?
【问题讨论】:
-
您需要将原始值单独保存在某个地方,这样比较测试和回归都很容易。
-
您可以使用所有默认值的隐藏列(或行)来实现此目的。剩下的就是条件格式化,看值是否不等于默认值
-
在工作表中使用
Selection_Change记录你当前的值,然后Change进行检查,所以在Selection_Change中设置varWas,在Change中设置varTo,然后比较两者。 -
@SolarMike 当您在不同的 Sub 中说某个单独的地方时?还是只是在 Sub 之外设置 Dim?