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

发布于 2025-01-05 23:15:20 字数 656 浏览 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 Precentage 单元格样式非常相似)

但是,如果我执行以下操作:

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

并且用户多次点击按钮,则值每次都会乘以。有没有办法指定显示格式之类的内容,以便保留实际值并且仅将显示值乘以 100?或者有另一种方法可以防止价值倍增?

I have a piece of code that formats cell according to requirements:

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

And this code is invoked then button on custom ribbon is pressed. It's similar to percentage cell format. One more thing I have to add is multiplying the cell value by 100.
For instance

  • cell value is set to 0.15, I click button and value changes to 15%.
  • cell value is set to 2.5, I click button and value changes to 250% etc. (very similar to default Excel Precentage cell style)

However, if I do something like this:

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

and user hits button multiple times, value is multiplied every time. Is there a way to specify something like display format, so that actual value is preserved and only displayed value is multiplied by 100? Or another way to prevent value from being multiplied multiple times?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丘比特射中我 2025-01-12 23:15:20

那么,您不需要将其乘以 100

如果单元格有 0.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

快照

在此处输入图像描述

Well you don't need to multiply it by 100

If the cell has .15 then apply the formatting

Range.NumberFormat = "0.00%"

It will automatically change to 15.00 % and you don't need to multiply it by 100.

FOLLOW UP

An out of the box thinking... Why not hide the % symbol by setting the color of the % to white?

VBA CODE

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

べ映画 2025-01-12 23:15:20

一种肮脏的方法是维护隐藏工作表,移动原始值,或在单击按钮时在隐藏工作表中维护该单元格的标志

A dirty way would be maintain a hidden sheet, Move original value, or maintain flag for that cell in hidden sheet on button click

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文