VBA 无法识别 [Red] 数字格式
VBA not recognizing [Red] number format
我正在编写如下所示的简单代码,但是 excel 似乎无法识别 [Red] 数字格式,正在将其更改为“#.##0,00” 任何想法关于如何解决这个问题?我试过其他数字格式,但似乎总是无法识别 [Red] 格式。
此外,有没有一种方法可以缩短代码,而不必每次都复制“Or c.NumberFormat”?
谢谢!
代码如下
Dim c As Range
For Each c In Selection
If Not c.NumberFormat = "0%" Or c.NumberFormat = "0%;(0)" Or c.NumberFormat = "0%;[Red](0%)" Then c.NumberFormat = "#.##0,00"
Next
End Sub
我几乎可以肯定您的问题与 Red
格式无关。
在您当前的 If
语句中,Not
运算符仅对第一部分求反,因此格式 "#.##0,00"
设置为所有不具有该格式的单元格"0%"
你的意思是
If Not (c.NumberFormat = "0%" Or c.NumberFormat = "0%;(0)" Or c.NumberFormat = "0%;[Red](0%)") Then
可以更改(使用简单的布尔代数,这不是 VBA)到
If c.NumberFormat <> "0%" And c.NumberFormat <> "0%;(0)" And c.NumberFormat <> "0%;[Red](0%)" Then
在 If
语句中,没有快捷方式
If c.NumberFormat = "0%" Or "0%;(0)" Or "0%;[Red](0%)"
您可以将格式分配给变量以缩短 If 语句。这还有一个好处,即代码稍微快一些,因为它减少了 VBA 和 Excel
之间的往返次数
Dim nf As String
nf = c.NumberFormat
If nf <> "0%" And nf <> "0%;(0)" And nf <> "0%;[Red](0%)" Then
或者您可以使用 Select case
-语句
Select Case c.NumberFormat
Case "0%", "0%;(0)", "0%;[Red](0%)"
Case Else
c.NumberFormat = "#.##0,00"
End Select
我正在编写如下所示的简单代码,但是 excel 似乎无法识别 [Red] 数字格式,正在将其更改为“#.##0,00” 任何想法关于如何解决这个问题?我试过其他数字格式,但似乎总是无法识别 [Red] 格式。
此外,有没有一种方法可以缩短代码,而不必每次都复制“Or c.NumberFormat”?
谢谢!
代码如下
Dim c As Range
For Each c In Selection
If Not c.NumberFormat = "0%" Or c.NumberFormat = "0%;(0)" Or c.NumberFormat = "0%;[Red](0%)" Then c.NumberFormat = "#.##0,00"
Next
End Sub
我几乎可以肯定您的问题与 Red
格式无关。
在您当前的 If
语句中,Not
运算符仅对第一部分求反,因此格式 "#.##0,00"
设置为所有不具有该格式的单元格"0%"
你的意思是
If Not (c.NumberFormat = "0%" Or c.NumberFormat = "0%;(0)" Or c.NumberFormat = "0%;[Red](0%)") Then
可以更改(使用简单的布尔代数,这不是 VBA)到
If c.NumberFormat <> "0%" And c.NumberFormat <> "0%;(0)" And c.NumberFormat <> "0%;[Red](0%)" Then
在 If
语句中,没有快捷方式
If c.NumberFormat = "0%" Or "0%;(0)" Or "0%;[Red](0%)"
您可以将格式分配给变量以缩短 If 语句。这还有一个好处,即代码稍微快一些,因为它减少了 VBA 和 Excel
之间的往返次数Dim nf As String
nf = c.NumberFormat
If nf <> "0%" And nf <> "0%;(0)" And nf <> "0%;[Red](0%)" Then
或者您可以使用 Select case
-语句
Select Case c.NumberFormat
Case "0%", "0%;(0)", "0%;[Red](0%)"
Case Else
c.NumberFormat = "#.##0,00"
End Select