在VSTO中应用百分比格式 – 在幕后乘以100

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

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

这个代码被调用,然后按下自定义function区上的button。 这与百分比单元格格式相似。 还有一件事,我必须加上单元格值乘以100.例如

  • 单元格值设置为0.15,单击button,数值变为15%。
  • 单元格值设置为2.5,我点击button和值更改为250%等(非常类似于默认的Excel Precentage单元格样式)

但是,如果我做这样的事情:

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

并且用户多次点击button,每次都会增加值。 有没有办法指定像显示格式的东西,所以实际值保存,只有显示值乘以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 

快照

在这里输入图像说明

一个肮脏的方法是维护一个隐藏的工作表,移动原始值,或维护该单元格的隐藏工作表上的button点击标志