ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何在单元格中累加数字?

如何在单元格中累加数字?

作者:绿色风 分类: 时间:2022-08-17 浏览:104
楼主
gvntw
Q:如何在单元格中累加数字,如在A1输入1,再输入2,结果为1+2=3,再输入3,结果为3+3=6?
A:代码如下:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Static temp As Double
  3.     If Target.Address = "$A$1" Then
  4.         Application.EnableEvents = False
  5.         [a1] = Val(temp) + Val([a1])
  6.         Application.EnableEvents = True
  7.     End If
  8.     temp = [a1].Value
  9. End Sub
2楼
yukaiwz
我想找的就是这个,谢谢分享!
3楼
gzy001
不错,小不点,谢谢了!!!!!
4楼
十万个为什么
我很笨,看不懂啊,可以说得再仔细一些吗?最好一步一步地写出来,因为我还是只菜鸟啊,望不吝赐教哦
5楼
十万个为什么
还有适用版本你上面写着2007,难道2003的不能用吗?希望你好好教我
6楼
gvntw
2003也一样,已修改,谢谢提醒!
操作步骤:右击工作表标签—查看代码—在“代码窗口”粘贴代码—关闭VBE编辑器就行了。

PS:若看不见代码窗口,请按一下功能键 F7。
7楼
木空
谢谢................
8楼
yncxxmj
楼主,能不能把每行代号解释一下,我是菜鸟。
9楼
biaotiger1
不明白王版为什么要增加两个VAL?我用如下代码运行通过的,而且将A1单元格设置为文本也没问题。
07刚用,我竟然没找到VAL的帮助


谢谢先



  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Static temp As Double
  3.     If Target.Address = "$A$1" Then
  4.         Application.EnableEvents = False
  5.         '[a1] = Val(temp) + Val([a1])
  6.         [a1] = temp + [a1]
  7.         Application.EnableEvents = True
  8.     End If
  9.     temp = [a1].Value
  10. End Sub
10楼
gouweicao78
to biaotiger:VBA中的VAL应该就是类似工作表函数Value。
2003有帮助信息,2007也有啊:返回包含于字符串内的数字,字符串中是一个适当类型的数值。

不信,你在A1依次输入1、3、a看看,你的代码就出错了,发哥的可以将非数字转为0
11楼
biaotiger1
谢谢草版回复,我也奇怪,为什么会用val呢
value我知道,VBA中转换为数值我也知道,呵呵
原来是A1单元格输入字符类型未限制。明白了

再次感谢
还有一个问题,为什么在excel VBA帮助中找不到VAL呢?如下图
不会用帮助恐怕比看不懂代码 问题更严重哦
未找到val的帮助.JPG
 
12楼
gouweicao78
估计你的安装不完全,或者有别的问题。我在VBE右上角帮助搜索的那个地方输入“val”回车后就出来了
13楼
mas008
请教:如何将该代码使用到整个第三行,即A3是A1的累加,C3是C1的累加,D3是D1的累加,E3是E1的累加.......?
14楼
whxlh2000
很好!
15楼
hyl_2010
01.Private Sub Worksheet_Change(ByVal Target As Range)   '01.私有的过程Worksheet_Change(变量Target 为 单元格区域)
                                                          '
02.    Static temp As Double                             '02.静态声明temp 为 双精度值
                                                          '
03.    If Target.Address = "$A$1" Then                   '03.if(如果)Target.地址 = "$A$1" 则执行
                                                          '
04.        Application.EnableEvents = False              '04.应用程序.激活事件 = False
                                                          '
05.        [a1] = Val(temp) + Val([a1])                  '05.[a1] = <转成数字>(temp)+<转成数字>([a1])
                                                          '
06.        Application.EnableEvents = True               '06.应用程序.激活事件 = True
                                                          '
07.    End If                                            '07.结束if(如果)
                                                          '
08.    temp = [a1].Value                                 '08.temp = [a1].值
                                                          '
09.End Sub                                               '09.结束过程
                                                          '
16楼
不小心
请问如果要整列的每个单元格都用,怎么用?
17楼
bluexuemei
学习了!
18楼
paul001
没看懂是从哪里加到哪里?  是从A1 开始加么?

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap