会计人员在使用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