Раздел "elseif" моего кода VBA работает, но не "if" - PullRequest
0 голосов
/ 16 июня 2020

Я пытался настроить десятичные дроби для многих значений на листе Excel.
Цели были:
- для значений больше 100, без десятичных знаков;
- для значений меньше 100, но больше 10, один десятичный знак; и
- для значений ниже 10 два десятичных знака

Я думал, что использовать VBA будет достаточно просто, хотя я никогда не использовал его раньше. К сожалению, я ошибался. Пожалуйста, посмотрите мой код ниже. По некоторым причинам работает только раздел кода "elseif". Для значений ниже 100 десятичные дроби настроены правильно. Однако это не относится к разделу «если» моего кода.

Также кажется, что код работает в ячейках вне диапазона (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

1 Ответ

2 голосов
/ 16 июня 2020

Вы можете использовать одну строку кода:

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

Согласно этому правилу, числа меньше 10 будут иметь 2 десятичных знака, числа равные или больше 10, но меньше 100 будут имеет 1 десятичный знак, а в любом другом регистре будет целое число.

Обратите внимание, что это применимо только к формату, оно не меняет значения вообще . Если значение равно 200,55, вы увидите его как 201, но значение numeri c, используемое в любых вычислениях, связанных с этой ячейкой, будет использовать 200,55, а не 201.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...