我正在撰寫如下所示的簡單代碼,但是 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
uj5u.com熱心網友回復:
我幾乎可以肯定您的問題與Red格式無關。
在您當前的If-statement 中,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-statement
Select Case c.NumberFormat
Case "0%", "0%;(0)", "0%;[Red](0%)"
Case Else
c.NumberFormat = "#.##0,00"
End Select
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366804.html
