您的位置  > 互联网

如何用VBA代码直接定义功能区?

先说一下这里涉及到的知识点:xlam; 定制丝带; 常用表达; split 字符串分割; 自定义格式字符串; 其他的。 下面的视频详细解释了这一点。 我希望你可以自己尝试一下。 做完这个案例你就学会了如何制作Excel管理系统了,哈哈。

需求是这样的。 资产负债表、损益表、现金流量表的数据量往往比较大,动不动就有很多小目标。 当我们直接呈现数值时,表格一看就会显得充满了各种0。 ,举个例子,不太漂亮,但如果直接改成112.2亿元,就变成文字了。 不能用公式计算,也比较麻烦。 这时候你就得用自定义的格式来显示为112.2亿元,但是它的格式仍然是数字,也可以使用公式。 我们这里用VBA来做,会方便很多。

首先因为我们需要制作xlam格式的文件,而客户可能没有VBA基础,不知道如何调用,所以我们需要先自定义,将这些需求制作成控件放入在功能区中。 关于对象模型 公众号中《如何使用VBA代码直接定义功能区域?》 》那篇文章讲得很详细。 您可以点击下面的链接进行查看。 我这里就不详细说了。

对象模型

第二步是完成功能区,然后就可以开始编写将数字转换为十亿的代码了。 注意,你不是直接改成112.2亿元,而是批量改变格式,只是显示为112.2亿元。 ,实际上仍然是一个数值,不会影响公式计算。 代码如下:

数字显示数十亿美元:

子()

暗淡的As

调光范围

调暗范围

出错时转到 100

对于每一个Sh In

嘘。

如果 sh.Name = "BS" 或 sh.Name = "PL" 或 sh.Name = "Cash" 那么

Set rng = .("请用鼠标选择单元格编号范围:", , , , , , , 8)

对于每个 rn In rng

如果 rn.Value < 则

RN。 = "0!.0,万元"

别的

RN。 = "0!.00,,1亿元"

万一

下一个

100:

结束子

还有一种方法可以将数十亿美元转换为数字显示。 代码如下:

数十亿美元换算成数字显示:

子()

暗淡的As

调光范围

调暗范围

昏暗的

'设置正则表达式 = (".")

出错时转到 100

对于每一个Sh In

嘘。

如果 sh.Name = "BS" 或 sh.Name = "PL" 或 sh.Name = "Cash" 那么

Set rng = .("请用鼠标选择单元格编号范围:", , , , , , , 8)

对于每个 rn In rng

如果 InStr(rn, "万") 那么

rn.Value = Split(rn, "万")(0) * 10000

RN。 = "0.00_);[红色](0.00)"

InStr(rn, "十亿") 然后

rn.Value = Split(rn, "1亿")(0) *

RN。 = "0.00_);[红色](0.00)"

'使用正则表达式

'。 = 正确

'。 = "(\S+)([一-和])"

'设置垫= .(rn)

'结束于

' 如果 mat(0).(1) = "10,000" 那么

' j = 垫子(0).(0) * 10000

'rn.值 = j

' mat(0).(1) = "1 亿" 然后

' k = mat(0).(0) *

'rn.Value = k

万一

下一个

万一

下一个

100:

结束子

从上面可以看出,可以使用split函数截取“112.2亿元”中的数字,然后相乘。 还可以使用正则表达式截取汉字前面的数字。 当然,一定要注意分组。 使用第0个,即它是一个数值,然后乘以它的单位。 两种方法都可用。

最后,将其另存为xlam文件,并将其放入Excel加载项的默认路径中。 注意在工作簿打开事件中调用加载过程,这样你在电脑上打开的任何Excel文件都会有这个功能,就大功告成了。

过去的亮点

生产方法