Office 实战案例分享,做有意义的事情,每天进步一点点,今天比昨天好,这不就是希望么?
问题:
今天学习群里有网友问到这么一个问题,就是如何像状态栏那样不通过公式只通过鼠标选取就能得出2个数的差值。
![e686568243a94c449725722ce7ca795e.png](https://i-blog.csdnimg.cn/blog_migrate/5fc9b12022c3004d9cd708a434b32e1b.jpeg)
思路:
这个问题倒是提的挺新颖哈, 我们都知道通过状态栏可以进行一些很简单的计算,但是看了一下,貌似没有相减的计算啊,那怎么办?我们这里可以借助VBA来模拟这种效果。
![5adfed5c2286dc0383e2f34cfd73a48b.png](https://i-blog.csdnimg.cn/blog_migrate/92faf6790205bf6ac8c8f393fc7050ed.jpeg)
制作步骤:
1.模拟数据
![bf09871116c6293d8a52eb2d5c68cc9e.png](https://i-blog.csdnimg.cn/blog_migrate/54ec06c2aba052b5231a1f7120bb4743.jpeg)
2.插入代码
为了模拟随时能够自如计算,这里要用到VBA代码工作表SelectionChange事件,
![a2d74d92ef2f45c1ba4e02e2baccc16e.png](https://i-blog.csdnimg.cn/blog_migrate/842bb370fbec0e935fbfd91c2008e660.jpeg)
代码解析:
在选择为2个单元格的时候触发事件,然后调用excel的状态栏来显示两个单元格数据的差值。
大家注意看下面的动图左下角的数值变化:
![bff6ac63331112e6d9ab79a184bbfbb3.gif](https://i-blog.csdnimg.cn/blog_migrate/38e80eb376282e945bd6c2448f00e84f.gif)
这里面有2个知识点:
1).Application.statusbar,可以改变状态栏的显示,我们平时写代码,当碰到数据很多或者运行时间稍微长一点的时候,想了解代码运行进度的时候一般会用这个来显示,可以知道循环到哪里了。
2).target(i)这里其实是用到的range的item属性,可省略,表示在单元格区域的元素,顺序是从左到右然后从上到下的。当然这里也可以用offset。
这里模拟的是连续单元格的差值,要是不相连单元格区域或者不止2个单元格那代码就要修改了。
3.不连续2个单元格差值
由于不连续,所以我们循环遍历取值进行相减
![b12d84a7d98084675bcf818bff57ed00.png](https://i-blog.csdnimg.cn/blog_migrate/24adab62e18639cc504caa22fbd4477a.jpeg)
4.任意多个单元格求差值
这里默认第一个选中的单元格为被减数,后面的为减数进行求差值,我们只要取消条件判定即可。
![09eb86c99491e813fcd0454dff89725f.png](https://i-blog.csdnimg.cn/blog_migrate/9736a83152bc71bf77e9a585e9991735.jpeg)
5.工作簿里 任意多个单元格求差值
前面几个例子都是用的工作表事件,只能把代码放在相对应的工作表下面才能生效,想要整个工作簿都能运行的话,得改用workbook的sheetselectionchange事件
![d6156772803012958ba2e07545fe3c2d.png](https://i-blog.csdnimg.cn/blog_migrate/2dbc5ce5893e545062983915a76867f0.jpeg)
6.还原状态栏
注意我们这里用代码修改了状态栏的话,它是不会自动还原的,可能影响我们下次正常使用。我们这里要进行还原,很简单, 当关闭工作簿的时候,将其 赋值为空值即可。
![8845ef9b4b24105d174e3b7ec2f7f605.png](https://i-blog.csdnimg.cn/blog_migrate/d5ac5166411f482a72cb682de532555e.jpeg)
总结 :
如果Excel默认功能不能实现的话,我们可以用代码来解决,有时候甚至不需要很复杂的代码就可以实现一般人觉得不可能的事情。
需要掌握知识点:
- VBA事件
- Statusbar状态栏属性
- Item属性
喜欢的请关注|收藏|点赞|转发|评论吧,刻意练习,并获得正面反馈是精进成长的必要法宝,而你的互动将有助于你我共同的成长,谢谢!
————
运营:Excel365
![2b8eebe9c14b7b7fcc8c6e6fddd5b1a2.png](https://i-blog.csdnimg.cn/blog_migrate/2b4e59b7d87286382fa3645164f750e3.jpeg)