常用功能加载宏——单元格数字格式

2020-07-28 11:44:14 浏览数 (1)

会计人员在使用Excel的时候,经常会用到一种数字格式,在Excel里直接就叫做会计专用,也就是开始菜单里的那个逗号:

需要在Excel数据基础上写报告的人应该会发现,这种格式在复制到Word的时候,会出现一些空格:

前后会出现空格,这个时候一般需要手动去删除一下。

为什么会有这种空格?

我们从Excel复制数据过去,默认其实是复制了单元格的Text属性Text属性也就是我们眼睛看到的东西,Text属性显示的东西也就是设置了格式后的东西。

对一个设置了会计专用格式的单元格,右键打开设置单元格格式窗口,再点击自定义,显示的格式代码是:

代码语言:javascript复制
_ * #,##0.00_ ;_ * -#,##0.00_ ;_ * "-"??_ ;_ @_ 

这个代码以;为分隔符,分别表示大于0小于0等于0文本的格式,具体代码的意思可以到网上搜索Excel Text函数看看。

我们这里关心的是什么造成了那个空格,从上面的代码应该也能大概猜到,这里就直接写出不含空格的格式:

代码语言:javascript复制
#,##0.00

只要保留前面的一部分就可以,这个时候点击确定,重新设置单元格格式,再去复制单元格到Word,你会发现空格已经没有了。

所以,只要设置上面那个自定义格式代码,这样既能保留两位小数、会计的千分位,又不会有多余的空格,如果经常会有这种需要,那么创建一个按钮来设置单元格的格式就非常方便了:

首先在customUI.xml中增加代码:

代码语言:javascript复制
        <menuSeparator id="rbSepNumber02" title="自定义格式"/>
        <button id="rbbtnNumFormat1" label="会计格式" onAction="rbbtnNumFormat" imageMso="CommaStyle" tag="#,##0.00"/>   

回调函数:

代码语言:javascript复制
Sub rbbtnNumFormat(control As IRibbonControl)
    MRange.NumFormat control.Tag
End Sub

函数实现:

代码语言:javascript复制
Sub NumFormat(fmt As String)
    If TypeName(Selection) = "Range" Then
        Selection.NumberFormat = fmt
    End If
End Sub

0 人点赞