我的VBA代码中的 "elseif "部分可以使用,但 "if "却不能使用。

问题描述 投票:0回答:1

我试图调整excel工作表中许多数值的小数。目标是: -对于高于100的数值,不设小数; -对于低于100但高于10的数值,设一位小数; -对于高于100的数值,设一位小数。- 对于高于100的数值,不设小数;对于低于100但高于10的数值,设一位小数;对于低于10的数值,设两位小数。

我以为使用VBA会很简单,尽管我从来没有使用过它。可惜我错了。请看我下面的代码。由于某些原因,只有代码中的 "elseif "部分能正常工作。对于小于100的值,小数的调整是正确的。但我的代码中的 "if "部分却不是这样。

此外,似乎代码在范围外的单元格(A1:D11)中也能工作(只要我选择它们);这很好,因为我的工作表非常大。但我不明白为什么。

如果你能给我一些启示,我将感激不尽。

Sub adjust_decimal()
'
'
'

'
Dim cell As Range

For Each cell In Range("A1:D11")
  If cell.Value > 100 Then
    Selection.NumberFormat = "0;General"
  ElseIf cell.Value < 100 Then
    Selection.NumberFormat = "[<10]0.00;[<100]0.0;General"
  End If
Next cell

End Sub
excel excel-vba
1个回答
2
投票

你可以使用一行代码。

Range("A1:D11").NumberFormat="[<10]0.00;[<100]0.0;0".

有了这个规则,10以下的数字将有2位小数,等于或高于10但低于100的数字将有1位小数,其他情况都是整数。

请注意,这只适用于格式。它不会改变任何价值. 如果数值是200,55,你会看到它是201,但在涉及该单元格的任何计算中使用的数值将使用200,55,而不是201。

© www.soinside.com 2019 - 2024. All rights reserved.