使用VSTO应用百分比格式 - 在幕后乘以100

时间:2012-02-15 10:17:57

标签: excel excel-vba vsto excel-formula excel-2010 vba

我有一段代码根据要求格式化单元格:

        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 个答案:

答案 0 :(得分:1)

嗯,你不需要将它乘以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

<强>快照

enter image description here

答案 1 :(得分:0)

肮脏的方式是维持隐藏的工作表,移动原始值,或者在按钮单击时保持隐藏工作表中该单元格的标记