Примените процентный формат с VSTO - умножьте на 100 за кадром - PullRequest
1 голос
/ 15 февраля 2012

У меня есть фрагмент кода, который форматирует ячейку в соответствии с требованиями:

        Range.Font.Italic = Microsoft.Office.Core.MsoTriState.msoTrue;
        Range.HorizontalAlignment = XlHAlign.xlHAlignGeneral;
        Range.NumberFormat = "0.0_%_);(0.0)_%;-_%_)";

И этот код вызывается, затем нажимается кнопка на пользовательской ленте. Это похоже на формат ячейки в процентах. Еще одна вещь, которую я должен добавить, это умножение значения ячейки на 100. Например

  • значение ячейки установлено на 0,15, я нажимаю кнопку, и значение изменяется на 15%.
  • значение ячейки установлено на 2,5, я нажимаю кнопку, и значение изменяется на 250% и т. Д. (Очень похоже на стиль ячейки Excel Precentage по умолчанию)

Однако, если я сделаю что-то вроде этого:

        decimal result = Convert.ToDecimal(cell.Value);
        cell.Value = result * 100;

и пользователь нажимает кнопку несколько раз, значение умножается каждый раз. Есть ли способ указать что-то вроде формата отображения, чтобы фактическое значение сохранялось, а только отображаемое значение умножалось на 100? Или другой способ предотвратить многократное умножение значения?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Ну, вам не нужно умножать его на 100

Если ячейка имеет .15, тогда примените форматирование

Range.NumberFormat = "0.00%"

Он автоматически изменится на 15,00%, и вам не нужно умножать его на 100.

СЛЕДУЙТЕ ЗА *

Из коробки мышление ... Почему бы и нетскрыть символ%, установив цвет% на белый?

КОД VBA

Sub HidePercentage()
    Dim Temp As String

    Temp = Format(ActiveCell.Value, "0.00%")

    With ActiveCell
        .NumberFormat = "@"
        .HorizontalAlignment = xlRight
        .Formula = CStr(Temp)
        .Characters(Start:=Len(Temp), Length:=1).Font.ColorIndex = 2
    End With
End Sub

SNAPSHOT

enter image description here

0 голосов
/ 15 февраля 2012

Грязным способом было бы сохранить скрытый лист, переместить оригинальное значение или сохранить флаг для этой ячейки в скрытом листе при нажатии кнопки

...