网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月23日漏签0天
excel吧 关注:282,145贴子:1,558,157
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 11回复贴,共1页
<<返回excel吧
>0< 加载中...

请教一个问题,关于 vba 里面自定义函数的区域计算

  • 只看楼主
  • 收藏

  • 回复
  • ticanly
  • 博采众E
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
比如,我想创建一个函数用于合计总和(类似 sum 函数)
我自己以前学过一点vb,所以会写一些简单的代码,但是仅限个体的运算。比如以下截图内容,两个数、三个数合计总和,我会直接用a+b或者a+b+c来表达....
但是如果是一个区域所有单元格的合计运算,我完全没有头绪应该怎样写这个表达式...


........
上网百度了一下,有说用 range 数据类型去定义,但是后面的表达式没有写出来,我还是不知道怎样做

望各位大神赐教,谢谢


  • 僚哥哥
  • 情投E合
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
arr=Range("C4:G5")
For Each Rng In arr
result = result + Rng
Next
这样吧


2026-01-23 09:54:40
广告
不感兴趣
开通SVIP免广告
  • 数界如此多娇
  • E通百通
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
VBA也能调用现成的工作表函数,完全没必要自己构造新函数。


  • 僚哥哥
  • 情投E合
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Sub test()
For Each Rng In Range("A1:C3")
Debug.Print Rng.Interior.ColorIndex
If Rng.Interior.ColorIndex = 3 Then
result = result + Rng.Value
End If
Next
Debug.Print result
End Sub


  • ticanly
  • 博采众E
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Private Function colorsum(area As Range) As Integer
Application.Volatile
Dim a As Integer
a = 0
For Each Rng In area
If Rng.Interior.ColorIndex = 6 Then
a = a + Rng
End If
Next
colorsum = a
End Function
PS:唯一美中不足的地方就是,这个函数即便加了“Application.Volatile”这段话进去,还是不能实现自动重算。改变黄色底纹单元格内容可以自动重算,但是如果我直接改变的是某个单元格的底纹颜色为黄色,不能自动重算。只能在选项那里选择"手动重算"并且勾选上"保存工作簿前重新计算",再通过保存excel文件来触发它重算....


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 11回复贴,共1页
<<返回excel吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示