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

Excel 使用VSTO应用百分比格式-在幕后乘以100,excel,vsto,excel-formula,excel-2010,vba,Excel,Vsto,Excel Formula,Excel 2010,Vba,我有一段代码,可以根据要求格式化单元格: Range.Font.Italic = Microsoft.Office.Core.MsoTriState.msoTrue; Range.HorizontalAlignment = XlHAlign.xlHAlignGeneral; Range.NumberFormat = "0.0_%_);(0.0)_%;-_%_)"; 调用此代码,然后按下自定义功能区上的按钮。它类似于百分比单元格格式。我还要加上一件

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

        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格式单元格样式)
但是,如果我这样做:

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

用户多次点击按钮,每次值都会成倍增加。有没有办法指定类似于显示格式的内容,以便保留实际值,只将显示值乘以100?或者另一种防止值多次相乘的方法?

脏方法是在按钮单击时保持隐藏的工作表,移动原始值,或保持隐藏工作表中该单元格的标志。

脏方法是保持隐藏的工作表,移动原始值,或者在按钮单击时在隐藏的表格中保留该单元格的标志,您不需要将其乘以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
快照


你不需要把它乘以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
快照


没错。不幸的是,它会自动添加%字符。要求是不要表现出来。这就是为什么我的数字格式中在%之前有uucharacter。如果是这样的话,请参阅我的修订帖子;)这是非常开箱的:)谢谢@蜻蜓:如果你的问题解决了,请随意结束这个问题:)我没有使用它(最终),但它是一个解决方案:)这是真的。不幸的是,它会自动添加%字符。要求是不要表现出来。这就是为什么我的数字格式中在%之前有uucharacter。如果是这样的话,请参阅我的修订帖子;)这是非常开箱的:)谢谢@蜻蜓:如果您的问题得到解决,请随时关闭此问题:)我没有使用它(最终),但它是一个解决方案:)