Excel/VBA:如何将FormatCondition.NumberFormat设置为特殊变量值“Empty”?

Excel/VBA:如何将FormatCondition.NumberFormat设置为特殊变量值“Empty”?,vba,excel,conditional-formatting,Vba,Excel,Conditional Formatting,当我使用标准对话框在Excel中手动创建新的条件格式时,默认的NumberFormat是未设置的。这意味着:应用条件格式时不要覆盖数字格式。当我在VBA调试器中查看条件格式对象时,FormatCondition.NumberFormat的特殊变量值为空 当我通过Range.FormatConditions.Add使用VBA创建新的条件格式时,默认的NumberFormat是General。使用VBA,当我尝试将FormatCondition.NumberFormat设置为特殊变量值Empty时,

当我使用标准对话框在Excel中手动创建新的条件格式时,默认的NumberFormat是未设置的。这意味着:应用条件格式时不要覆盖数字格式。当我在VBA调试器中查看条件格式对象时,FormatCondition.NumberFormat的特殊变量值为空

当我通过Range.FormatConditions.Add使用VBA创建新的条件格式时,默认的NumberFormat是General。使用VBA,当我尝试将FormatCondition.NumberFormat设置为特殊变量值Empty时,运行的代码不会抛出错误,但结果是;;。这和空的很不一样

在更高版本的Excel中是否会出现这种情况?我没有权限尝试。 这个问题有解决办法吗? 澄清:Excel范围和单元格可能有两种数字格式。第一种是基数格式,使用Ctrl+1设置。这不包括条件格式。第二种是条件格式数字格式。如果设置,并且触发了格式条件,则第二个数字格式将覆盖基本数字格式


如果这很重要:我正在Windows7上使用Excel201014.x。

这很有趣。然而,我注意到它实际上并没有改变我的数字的外观。在运行宏之前和之后,看到对“常规”的更改,我的普通数字、货币和日期看起来仍然一样

另外,请注意,“常规”格式相当于清除“单元格格式”对话框中的“自定义”框。在VBA中,它相当于:

Activecell.NumberFormat = ""
甚至:

Activecell.NumberFormat = vbNullString

换句话说,它非常空。

为了得到相同的结果,我尝试将FormatCondition的NumberFormat设置为与单元格编号格式相同的值:

MyCell.FormatConditions(1).NumberFormat = MyCell.NumberFormat
它生成了一个错误,导致格式化条件number format正好是我想要的

所以我最终尝试了这个,它解决了我的问题:

On Error Resume Next
MyCell.FormatConditions(1).NumberFormat = "this does not exist"
Err.clear
On Error GoTo 0   'or any error handling you already set

也许我的解释不清楚。尝试将活动单元格中的数字格式设置为+,0.00;-,0.00;0.00. 然后你会看到普通和数字格式之间的区别。所以,我将数字2.342设置为你在这里列出的格式。然后我运行一些由宏记录器生成的代码来应用一些条件格式。单元格中显示的数字前后均为2.34。我还在Win7上运行Excel2010。希望很明显,我发现这是一个有趣的问题。如果你想发布一个关于你正在做什么和看到什么的更详细的例子,我一定会去看看。谢谢你的关注。我真的很感激。我将尝试添加精确的步骤来重新创建此问题。我不确定我是否理解。如果在条件格式中设置了数字格式,则第二种数字格式将覆盖基本数字格式。如果条件不成立,则基本格式保持不变。。。