对于会计人员来说,有一个经常要用到的操作,那就是把数字转变为万元为单位的、或者是把万元为单位的转变为普通的,一般的操作可能是:
- 在新的一列使用公式*10000或者/10000
- 然后把结果数值粘贴回去
Excel用的更熟练的可能是:
- 在一个单元格输入10000,然后复制这个单元格
- 选中需要转换的数字区域
- 选择性粘贴-乘或者除-确定
后面这个其实已经很方便了,但是比起点一点菜单就完成转变来说,还是麻烦了那么一点点:
首先在customUI.xml中增加代码:
代码语言:javascript复制 <menuSeparator id="rbSepNumber01" title="================="/>
<button id="rbbtnNumChange1" label="×10000" onAction="rbbtnNumChange" imageMso="WrapText" tag="10000"/>
<button id="rbbtnNumChange2" label="÷10000" onAction="rbbtnNumChange" imageMso="WrapText" tag="0.0001"/>
这里使用了一个tag属性,目的是为了共用一个onAction,因为除10000也就相当于乘0.0001.
回调函数:
代码语言:javascript复制Sub rbbtnNumChange(control As IRibbonControl)
MRange.NumChange VBA.CDbl(control.Tag)
End Sub
函数实现:
代码语言:javascript复制Sub NumChange(d As Double)
Dim selectRng As Range
Dim arr As Variant
Dim i As Long, j As Long
'确保选中的是单元格
If TypeName(Selection) = "Range" Then
Set selectRng = Selection
If selectRng.Areas.Count > 1 Then
MsgBox "未处理多重区域情况"
Exit Sub
End If
If selectRng.Cells.Count > 1 Then
arr = selectRng.Value
For i = 1 To UBound(arr)
For j = 1 To UBound(arr, 2)
arr(i, j) = VBA.CDbl(arr(i, j)) * d
Next
Next
selectRng.Value = arr
Else
selectRng.Value = VBA.CDbl(selectRng.Value) * d
End If
End If
Set selectRng = Nothing
End Sub