Excel 2016有条件格式化数据validation的单元格
我已经彻底search,找不到这个具体的问题。
我将首先描述一个工作案例,然后是一个非工作案例,我想这将描述我正在努力解决的问题。
工作案例:条件格式包含公式的单元格:
1 – 我定义了名称“ccell”,它是指“= ADDRESS(ROW(),COLUMN())”
- 它返回当前单元格的地址
2 – 我已经定义名称“ccellval”,它是指“= INDIRECT(ccell)”
- 它返回当前单元格的值
3 – 我已经定义了名称“_IsFormula”,它是指“= ISFORMULA(ccellvalue)”
- 它返回一个布尔标志,表示当前单元格包含一个公式
4 – 我有一个条件格式,使用公式“= _IsFormula”,并在行级应用(例如应用于“1:10000”)
预期的行为是,任何时候我input一个单元格的公式,该单元格改变格式 – 它完美的作品。
非工作案例:使用数据validation条件格式化单元格
1 – 我使用上面提到的现有的定义名称“ccell”
- 它返回当前单元格的地址
2 – 如果单元格是数据validation的,我有一个UDF返回布尔值:
Public Function Validated (ThisCell As Range) As Boolean Dim v: v = Null On Error Resume Next v = ThisCell.Validation.Type On Error GoTo 0 Validated = Not IsNull(v) End Function
我已经testing了这个UDF in-cell,并且在数据validation和#VALUE时提供了TRUE结果! 当它不是。
3 – 我定义了名为“_IsValidated”的引用“= Validated(ccell)”
- 我打算把这个UDF应用到当前cell = ccell
4 – 我有一个条件格式,使用公式“= _IsValidated”,并在行级应用(例如适用于“1:10000”)
预期的行为是,任何时候我将数据validation添加到单元格,该单元格更改格式 – 它不起作用。
我已经尝试了各种排列,比如将ccellembedded到“已validation”的UDF中,而不是“_IsValidated”定义的名称中。
我想用这个做什么? 我正在为用户编写模板,而且我希望将单元格作为视觉辅助工具着色。
任何指针/想法将受到感谢:)非常感谢!
你的问题是ADDRESS
和INDIRECT
返回的误解。 ADDRESS
返回一个包含单元格地址的String
。 而INDIRECT
不会返回一个单元格值,而是一个单元格引用。 这就是为什么你的名字ccellval
最好是ccellref
。
您的UDF
Public Function Validated (ThisCell As Range) As Boolean
需要ThisCell
作为Range
(作为一个单元格的引用),但你交出ccell
这是一个String
。
所以:
1 – 使用上面提到的现有的定义名称“ccell”
- 它返回当前单元格的地址作为一个
String
2 – 已定义名称“ccellref”,其引用“= INDIRECT(ccell)”
- 它返回当前单元格的引用
3 – 如果单元格是数据validation的,让您的UDF返回布尔值。
4 – 定义了名称为“_IsValidated”的引用“= Validated(ccellref)”
5 – 具有使用公式“= _IsValidated”的条件格式