该如何实现这个功能呢?今天我们就利用VBA采用FOR EACH循环来实现我们的需求。下面的代码实现了选择区域自动求和和选择单元格个数的自动计算功能:Sub mynz_3() '第3讲:在EXCEL表格中实现选择区域的自动计算 Dim t As LongDim k As LongDim d Sheets("3").Select k = 0 For Each d In Selection k = k + 1 If IsNumeric(d.Value) Then t = t + d.Value End If Next MsgBox "所选区域数值之和为:" & t & ",所选区域单元格共:" & k & "个"End Sub 代码截图:
2 代码解读及实现的效果
我们先来看看对上述代码的解释:1) Sheets("3").Select,说明这个功能是在”3”的工作表中来实现的。2) Dim d 定义d这个变量时可变的,没有给他具体的变量名称,读者可以自己查查我之前的文章,可以看到此时计算机分配给这个变量的具体内存是多大3) For Each d In Selection 用的是FOR EACH的循环语句,遍历的元素是SELECTION中的各个元素,这个元素用d表示4) k = k + 1 用K来表示SELECTION中的单元格的个数,有一个就加上15) IsNumeric(d.Value) 是判断单元格是否是数字。这时用到IS函数,对于是否是数字的判断,在VBA和EXCEL中是不同的函数,要切记。6) t = t + d.Value 如果是数字就累加求和7) MsgBox "所选区域数值之和为:" & t & ",所选区域单元格共:" & k & "个" 遍历完成所有元素后弹出对话框,给出结果,关于MSGBOX函数后面还有讲解。 下面我们看看代码的运行结果:我们选择了上述的9个区域,数字为1,3,5,7,9,9,9,9 看下面程序的运行结果:完全正确。这就实现了我们的预期。当然,我上面的代码只是实现了众多的问题中的一个,如果是求其他的问题只是将代码略加改动即可,如,求选择区域大于10的,只要改成:d.value>10,在做相应的计数即可。这就是VBA的方便之处。 今日内容回向:1 为了实现选择区域的自动计算,需要哪些函数?2 为了实现选择区域的自动计算,需要用到哪个循环语句?3 如何实现选择区域的自动求出不是数字的单元格个数? 本讲内容参考程序文件:VBA代码解决方案(1-19).xlsm 我20多年的VBA实践经验,全部浓缩在下面的各个教程中: 【分享成果,随喜正能量】不要用无数次的折腰,去换得一个漠然的低眉。我们终其一生,不是为了满足所有人,而是只需要找到和自己同频共振的那一部分人。。