每天三分钟,工作更轻松,点赞加关注,学习不迷路,这节课我们学习一下数据图纸表如何自动更新,当然自动更新呢,他就牵涉到一部分编程的内容,但是我们这节课所涉及到的都很简单,只要你不跑神, 我们来看透视表自动更新呢,需要三个 vba 知识,首先代码呢,就不用你再去自己写了,把这些复制一下就可以了。 active workbook, there refresh all。 每个单词都很简单,连在一块可能不知道啥意思,其实就是活动工作部全部更新的意思,我们在工作表当中也能够看到。那第二个知识点呢,是工作表的事件 activate, 那英语我们也都知道, activate 就是激活的意思,那第三个知识点呢,就是能够储存 vba 代码的工作部格式分别是 xls 和 xlsm, xls 呢是老版本的 etc 呢,用的就是这个格式,那新版本呢,一般是 xosx, 稍后我们也会示范,那么接下来我们就一起操作一下。首先我们来看这是一组基础数据,我们先新建一个简单的数据投入表,插入数据投入表, 那为了演示啊,我们放在新工作表里,然后确定,这时候呢生成一个 c 的酒, 然后我们把店铺拖到行这里,把总额拖到直这里,这时候就生成一个简单的数据透视表。 那我们接下来如何操作呢?首先你点击开发工具,然后呢这里有一个 view basic, 点击一下,这时候呢就来到了 vba 的编辑界面,然后呢我们 首先要找到新建的 ct 九,那我们看到啊,这里是我们工作部的名称,然后下面呢有对应的每个工作表,那我们要找的这个 ct 九呢,就是括号里面你看哪个写的 ct 九,这个写的 ct 九,那我们要找的就是他双击双击以后呢,你会发现这边呢变成了空白的。 这个时候呢,首先在通用这里,这里有个倒三角,你点击一下,点击这个 worksheet, 然后后面呢会有对应的英文单词,同样他这里也有一个倒三角,我们点击,然后这里有第一个就是 activate, 这样呢就生成了这样一个两具代码,中间呢是空白的。然后我们把这句话呢,我这里是复制啊,当然你手敲 对下也很方便啊,不用大写小写写进去呢,他可以直接自动变大写,让我给大家示范一下 activactive work book there, r e, s h refresh all all 这样可以了,这样呢他就可以自动更新了。你比方我们来试一下, 我们把东店呢这个总额十八呢,给他改成一万啊,确定看一选自动形成一万,我们再改个南店 难点,这个难点呢给他改成十万过来,你看也是自动更新过来。通, 包括如果你前期设定的时候应用了这个表格式啊,或者说这个动态的密定义名称,动态数学引用的话,都可以更新。以后呢你只要选中你透视表所在这个工作部呢,他都可以直接更新过来。那我们用到的其实原理给大家简单解释一下,就是在 数据下面有个全部刷新,对不对?那我们刚才通过的编程操作的意思就是说我们一旦选中这个工作表的时候呢,就让他自动刷新一次,那最后呢来看一下这个保存格式啊,就是能储存微微的代码格式, 这个时候呢你一定要把它保存为刚才我们提到那两种格式, 第一种格式呢就是这个 x 二九七二零零三工作部,但是如果你有一些新的功能的话,我建议你选择 xlsma, 就是这个启用红的,启用红的工作部啊,这个第二个就是,然后是这份念桌面,确定这样子就成功了, 关闭,重新打开,我们再改个西店,西店改了,改个一千 过来,你看自动更新。好,这节课呢其实很简单,就是如果你要学习 vba 的话,他会很难,但是的话你想简单的应用这个知识点的话还是很容易的。那么这节课我们就到此结束。
粉丝2.7万获赞7.8万

这节视频我们来讲用 vba 控制数据透视表,正常情况下如果说我们的数据源数据增加了,我们是需要去修改我们的数据透视表的取值范围,比如这样我们随便加一条数据, 然后去改一下他的数据源,我们就到六十二了,确定看这个时候就能刷新出来, 我们也可以去录制一个红,以后,就让这个红自动去刷新我们的数据透视表。比如说我们先加一条数据, 然后咱们录制红, 我们修改一下它的数据源,这里我们直接改成六十三点。确定好,我们刚才加了 test 二也出来了啊,我们停止一下红,然后看一下代码, 我们把多余的去掉, 然后这里就是我们的最下面一个行号,我们把它改成变量, 用 i 吧,然后我们给 i 负一个值, i 等于我们用 a 向下走, 找到他最后一个行的行号。好,我们将这个红给这个按钮, 好,我们重新来加一下数据, 好,再来点一下这个按钮,看这个时候我们新加的数据就都过来了。

各位朋友大家好,今天给大家介绍一下 iphone k 肾这个对象的常用属性跟方法。因为他是 excel 程序的最高级别对象,所以他的多数属性都跟整个程序有关。首先是属性 sure, 这个经常会用到,在程序的执行过程中,屏幕会实时显示出代码,执行的过程屏幕会一直闪动,闪瞎眼,这个属性就能把屏幕刷新关掉,同时也能提高代码的运行效率。比如 如要把第三个工作表复制一百个,并在 a e 单元格随机填充底色,我们写一下代码,看下运行的过程,屏幕一直在闪动,看起来不太友好,只要在代码的开头把 surprise beat 的属性值设 置为 boss, 这样屏幕更新就被关闭了,代码运行过程不会显示出来,但最重要的别忘记在过程最后改回来,也就是把属性值重新设置为处,不然 excel 也没法正常使用了,在运行程序就只能看到最终的结果,而不会显示过程了。接着是 这个属性是控制对话框的,比如删除一个工作表,会弹出对话框让我们确认。如果把这个属性设置为关闭的话,就不会弹出对话框,直接删除包 或关闭工作部前的对话框。如果属性是关闭状态,就不会弹出对话框提示保存文件。所以在过程的最后,同样要把属性设置为处。接着是启用或禁用事件的属性, 用法跟以上的类似。然后是 fk 肾的方法 antam, 他能设置定时运行程序,比如实时显示当前时间,让秒数实时跳动,就是他的一种应用效果。我们看下他的代码如何编写。 首先写一个过程,在 ae 单元格显示当前时间,再写一个过程,定时启动显示时间,这个过程 动的时间是当前时间加一秒,也就是一秒后执行显示时间,这个程序要启动的过程名称是显示时间,过程名要加双引号。第三个参数是等待时间,因为 程序是按顺序运行的,假如把等待时间设置为十秒后,如果十秒后还没排到这个程序运行的话,我们设定要运行的程序 就取消运行了,就是过时不候的意思。第四个参数是否运行,默认是运行的参数是处,把参数设为 boss, 程序就停止了。关闭工作步前要停止,不然关不了。添加一个按钮,调用启动这个过程,点 击按钮,爱意单元格出现了时间,但是时间不会走动,咋回事?看下代码,原来是程序没有相互连接。在 a 一单元格显示时间后,需要在运行启动这个过程,原理就是运行启动这个过程后,一秒后就运行显示时间这个过程。而 在 ae 单元格显示当前时间后,在运行启动这个过程,那么一秒后又运行了显示时间这个过程,如此往复,就达到了时间每秒 秒跳动一次的效果。接着再写一个停止的过程,代码跟启动类似,只要把 otm 的第四个参数设为 boss 就行了。再添加一个按钮,调用停止过程点, 点击启动时间开始跳动,点击停止时间停止跳动过程中又不影响编辑工作,表按他还有很多好用的过程等你去开发。接下来是方法按 k, 它的作用是给一个过程设置快捷键,方法 out, 作用是撤销上一步操作效果跟 ctrl 加 c 一样。还有方法为可 已在过程中图设定等待时间,时间到了再继续运行过程。最后是方法 cat, 作用是退出整个 excel 程序,如果工作部没有保存, 就会弹出提示框,搭配 discoutit 可以忽略提示框不保存,工作部直接退出程序。每一种语言都有基本的规则,理解后相互搭配运用,就能编写出你想要的程序。以上就是今天分享的内容,谢谢大家。

那么接下来的话,我们解决一下我们刚才在默认的一个刷信的一个部分,没有办法解决的一个步骤,什么样的步骤呢?那第一种方式我需要去进行一个修改的时候,我们就要需要刷信数据,我们需要点击什么样的按钮啊? 那点击全部刷新的按钮,他才会进行一个全部刷新的这样一个操作。那么对于我们来说的话,这这个操作有点麻烦,因为我们点击下面同时要点到上面,我也有没有办法能做的到,我点我这边做一个按钮,然后他自动的去点击呢? 那这个的话其实也是没有太大问题的啊,那这里面,但是呢,我们这里面的话其实要动用的一个功能就是 vba 的这样的一个步骤,那 vba 的步骤我们如果说不知道 party 怎么去 刷新的,那有什么办法去得到我们这样的一个内容呢?大家说啊,上网去找,其实我们在这里面根本就不用上网去找,我们用一种比较取巧的方式来实现。 ok, 我们现在来给大家来演示一下啊,就是看一下我们的一个数据刷新的一个困扰,这是我们刚才给大家讲的,那么要么我们最低的话要达到刷新频率,最低是一分钟, 那么要么的话我们就必须要去手动刷新,那么这是我们一个比较困扰的这样的一个呃内容啊,那我们有没有什么其他的办法呢?我们来看一下啊, 这里面的话有用到的就是 excel 的一个 vba 的功能,那 excelvba 的功能是非常的强大,我们默认来说利用我们的 excel 做不到的功能,我们都可以通过 vba 的方式来实现,那我们 来看一下,首先我们如果说希望去用一个按钮实现我们的一个动态的一个刷新,我们怎么办呢?怎么突然间冻住了 啊?刚才已经冻住了一下,那这里面的话,我们就呃给大家继续来看啊,就是 excel 的一个录制红的这样的功能,那么录制红这个功能在哪里呢?通常来说的话,我们在使用 excel 的时候,我们可能不会发现说,哎,这里面好像没有啊, 那需要去我们做一个操作,什么样的操作啊?去把我们的开发工具的这样的一个按钮给打开,那么开发工具按钮打开了之后的话,我进行一个录制红的操作, 这里面的话陆志宏怎么录制呢?那其实的话就是呃,点一个陆志宏,然后给他命一个名,命的名以后的话,在 回到我们的一个数据这里一个叶签里面去把我们的一个刷新的这个步骤做一个什么?就是做一个呃刷新,那么我们的这个呃录制的这个红的这个功能就已经录制下来了。 那么接下来我们怎么去调用呢?那其实很简单啊,我们在这里面可以添加一些空间,那在空间的话,其实我们是刷新数据,然后使用到他的一个刷新数据功能来实现说,哎,我直接点一个这个也能实现,我们就不用去数据的这个页签里面去做一个修改了。 ok, 我们在这里面给大家来演示一下啊,就是这个的话,其实就是我们的一个呃页面,那比如说我们在这里面需要去添加一个我们的一个 内容,我们首先要知道说,哎,我需要去做一个东西来实现什么样的功能,来实现这里面的一个相对应的一个呃,就是刷新的功能,那默认来说我们这个开发工具啊就不会在这里显示,我们需要去找到我们的这个 呃其他命令的这里面,然后把我们的什么,把我们的一个呃功能区的这个开发工具啊给他选上,我们才会有这样的一个内容出现。那这时候我们选一个录制红,比如说录制刷新功能, 然后的话点击确定,那么点确定了之后的话,我们进到我们的一个数据,然后找到这面刷全部刷新的功能, ok, 那我们就 其实就已经拿到了我们的一个全部刷新功能,他所使用的一个红的功能,我们停止录制,然后点到 vco basic 的话,我们来找到我们的一个这样的一个模块啊,就是我们来看一下他使用的这样的一个呃功能是用的是什么样的一个刷新数据, 那我们开始已经做过了一个,那这里面的话我们发现刷新数据功能其实很简单,那其实用的是什么? egg walk book, 然后 reflex 哦的这样的一个功能。那我们其实知道什么呢? 其实知道说啊,原来就是这么一个一条命令就可以实现这样的功能,那我们在这里面的话,呃,有这个红了之后的话,我们在这里面添加一个什么,添加一个按钮,然后按钮在这里我们给他,呃 选上我们的一个录制刷新功能, ok, 点确定,然后我们给他变一个名 刷新。 ok, 那这里面的话,呃,只要我全点一下改变了以后的话,我们去刷新一下我们的一个内容,那这里面的话结果就已经被刷新掉了,对吧? 那接下来的话有另外的一个问题啊,就是我,我连刷新我都不想按,我有什么有什么办法呢?那这里面的话,我们先选中这个,然后找到我们的查看代码, 然后在这里面的话有一个 selection, selection chance, 然后摆摆了的,他给的啊 change。 然后我们只要选中了这个地方,我们就去进行一个什么,就去进行一个 我们的一个刷新的一个操作,那这里面的话我们就能发现啊,我们先修改一下这里, 然后再点一下其他地方, ok, 是不是已经马上被修改了,对不对?这个这个的话其实我们利用 vba 的方式也能帮我们实现,那这里面的话零七零零二是不是马上变了,对不对? 说这个的话其实就是利用我们的一个 vba 来实现这样的一个功能,也等同于我们的什么呀?等同于我们的一个刷新功能。当然大家稍微对于 vba 的话要稍微会有一点点了解, 那这样来说你知道怎么去啊?进入到我们的开发工具,怎么去进行一个红,怎么去插入我们的一个按钮? ok, 那这个的话就是我们这节课程带给大家内容,大家需要认真的去理解和学习哦。 ok, 这节课程就到这里,我们下节课再见。

ok, 我们给大家分享完毕有关 excel 的,利用我们自动刷新的这种方式进行我们的一个数据的刷新, 但是呢他解决不了一个问题,如果说我们的数据刷新需要比较快的一个速度,比如说每五分钟刷新一次,那这边的话毫无疑问是通过我们当前的这种方式是刷新不了的。 那如果说我们希望更快的去刷新我们的数据怎么办呢?那原则上我们需要去结合我们的 vba 的一个功能来实现相应的一个刷新。那么实现我们的 vba 的刷新的话,有个前提条件啊,就是说我们的数据的 这种模式呢,必须是呃加即用的红模式,也就是我们保存的数据的话,必须是 x o m x 这种方式来兼容我们,当然当起来红,那么原则上的话,我们通可以通过这种方式呢去解决我们当前的这个间隔小于一分钟的这样问题,比如说每 十分十秒钟,呃每二十秒钟或者每三十秒钟去刷新的这样的一个问题。那么原则上的话,我们再进行我们的数据的 vba 的这个解决方式的话,首先你要了解一下 vba 是什么, 那么 vba 到底是什么呢?其实,呃如果说做过 excel 的相应的一些功能开发的一些朋友的话,一定对 vba 是非常的熟悉,那 vba 的话是从我们 excel 诞生以来的话,利用它来信用的自定义的功能开发一个非常强大, 因为我们很多时候的话需要把相对的一个功能的来进行一个啊泛化,比如说我们需要经常的去复制一些数据,我们需要经常的合并些数据, 然后合并一些数据的话,然后把它展现出来,那这样来说的话,是不是对我们来说呢?是非常的容易呢?或者简单呢?对吧?那这个的话其实就是我们用微憋,早期通过微憋的一个功能,那么现在来说的话,我们可以通过跑快来实现, 那么我们刚才讲到短期短时间内通去实现我们的一个 va 的这样的一个红的一个功能进行刷新的话,我们首先要录制一个红,因为我们对我们来说的话,所有磁性的操作将会被录制下来, 于是我们再点击我们的数据,然后再进行全面的刷新的这个过程当中,我们通过录制红操作,我就知道说,哎,我执行的到底什么是是什么操作,那么原则上的话,我们只要保留相对的一个操作就可以了。 那么在我们执行完这个操作以后,然后去调用我们相对应的这样的一个红的这个方式呢,去进入我们的数据刷新我们,然后把我们的这个内容呢按照按钮的方式来进行 点进行,就是按需要进行执行,比如说我们这边点击刷新数据,那么只要点击刷新数据之后,我们会发现,哎这个数据的话就能够实时的进行一个刷新。那么另外一种红刷新的模式呢,是可以自动的进行一个刷 信啊,比如说我们当前的这个里面的话,我们来编写了一个代码,首先我来编写了一个哎哎 refresh 的这样的一个功能,然后呢在这边的话使用了一个奥迪曼的这样的一个,呃,我们叫模块,然后去直接点击这一个地方刷新, 那么刷新了之后的话,我们就直接要配开选昂探好每五秒钟去刷新,我们执行我们当前的这个内容,就相当反复的回掉这样的一个函数来实现说我们每个五秒钟自动的刷新,那这个究竟怎么做呢?我们来给大家看一下啊, 哎,首先我们在第一盘或者一盘建立一个这样的文件夹吧,我们在这里面建入一建立一个 vba 的文件夹, 那么在这里面的话,我们假设给他建立两个 文件的内容,我们首先呃打开一个工作表,我们假设就是数据,哎,员工数据吧, 班级数据,好了,那么在班级数据里面的话,我们首先来构造一个什么呀?构造我们所需要的这个刷新的这样的一个内容, 那么原则上我们在这里面的话填入说呃学号,姓名,性别,年龄就可以了,因为对我们来说的话,如果说我们要求的呃刷新的 时间的间隔小于五秒钟的话,我们直接呃掉这个 vba 就好了。那么首先来看一下我们当前的这个原数据,在这里就是写上一个姓名工号, 不叫公号,叫雪号,弄错了。 然后姓名性别,年龄幺零零幺 张三,性别男,二十一 幺零零二,李四,性别女二十三 幺零零零三,王五 二四五幺零零四,张五,男 二十三。那么首先来说我们如果说需要把这个数据呢保存下来,那接下来的话我们就进入一个界面啊, 呃,这是新建一个文件空白文件夹,然后去刷新我们当前的获取到的数据,那么对我来说的话,首先按照正常的一个方式呢,去把这个数据获取进来,获取我们相对的一个文件, 这时候我们把这个路径首先获取进来 班级数据点击导入,那么点击导入之后的话,我们就进入到跑快的界面当中, 然后点击这个数据,我们先直接加载啊,因为对我们来说的话,我们不需要再进行我们的数据的一个计算和呃相对那个操作, 那么加载到货我们当前的这个数据当中, ok, 那么就得到我们所需要的这样的一个内容, 那么在这个时候的话,我们如果说在这边不停的去增加我们的新的内容,幺零零五,呃找六, 然后点保存,这时候我们就会发现说,哎,我们在这里面画去刷新的话,他就得到这里面来了,然后我们再在这里面的话,再在幺零零六, 然后的话张六,张刘,然后男, 然后二十六,然后点一个保存。 嗯,好奇怪。 那么在这面画就是每次去刷新的时候的话,他都会去刷新我们当前的这个内容, 那么原则上的话我们在这边点击刷新的这个步骤啊,这就可以刷新我们所需要的这个数据,因为他本身来说的话是基于哎我们当前的这样的一个内容去实现刷新的。 hmm 到这边的话就得到我们所需要的这个内容啊,我们把这个自动保存关掉,然后的话这边就得到我们的这样的数据,那么原则上的话,如果说我们需要通过 vba 的这种方式,就是简化我们这样的一个保存的一个内容,我们可以怎么办呢? 我们可以通过,哎,在这边大家会发现啊,我没有所需要的这样的一个方式啊, 没有所需要的什么样的方式呢?就是我们在这里面画这个数据啊,就是我们没有办法在这边看到威边的主见,我们可以在选项当中把这个威边的主见给他开启起来,也就是我们提的 到的一个开发工具的这样一个栏,哦,这里有开发工具,我们再在开发工具里面去点击录制红,比如说我们叫做数据刷新,那么点击保存以后就得到我们的这样的一个内容, 那么原则上的话,我们点击开始录制之后,然后去刷新我们的这个内容,我们就可以知道说我们这个刷新的这个步骤到底是通过什么样的方式来实现的。 让我们在这里面话点击这个开发工具,然后去停止录制,那么我们的一个红就在这面已经可以看到了,我们可以看到我们的相对应的一个红,然后直行了以后的话,我们会发现啊,他这个数据是不是就自动的去刷新了,对不对?我们可以在这里面 点插入一个按钮的空间,要去让他执行我们所对应的一个红的一个刷新的这个操作。 那这时候我们每次点这个,他其实就刷新我们的这个数据,那么在这边的话把这个数据填进来, 那么在这边的话我们就可以看到,就是,呃,每一次在这里面做刷新的话,就得到我们这样的内容, 哎,他提示有供养冲动,我们先把这个先定成为一个文件啊, 我们先把它保存到本地 我的数据, 那么原则上的话,我们在这里面的话,因为他这边的话就是把它保存到相对的一个内容的话,我们先点击这个关闭, 然后呢我们再在这里面找到相对应的一个保存的一个内容 删除,然后我们再在这里面打开这个内容来看一下啊, 在造吧女,然后二十六保存, 能保存吗?哎,他就是不能保存,很奇怪啊,很奇怪,他会因为什么原因呢?我再看一下,因为这个的话我们先把这个关掉啊, 难道有 bug 吗?之前的话我们都没有什么太多问题的啊,最近的话好像就出现这样的 bug 存在,或者是我们当前的一个 offer 三六五的这样的一个保存的功能导致的,或者是其他的问题导致的。因为之前的话我们记得是不会这样啊,我们在这边给他加上一个照把, 然后呢二十四, ok, 然后我们把它保存, 保存完了之后的话,我们就可以在这里面去打开我们的一个我的数据文件, 然后我们刷新相对的一个内容, 那么刷新的新浪相对的内容的话,我们点击按钮文件,然后这一次刷新的话,大家会发现这个数据啊,将随随着我的按钮的话方式进行加载到我们当前的这个内容当中。 嗯?没刷新吗? 正在后台运行查询啊,有,有可能是我当前的机器比较慢, ok, 是不是已经 ok 了?当然的话我们也可以在这里面去编辑我们当前的一个红的这个内容, 然后去在这里面进行模块的一个编写,用我们当前的这个模块呢,就是只是一个这样的一个呃,选择的一个刷新,那么原则上的话,我们在这边可以把这个 ranjf 是给他 c like 的给他拿掉,因为这里面的话我们并没有这个内容,然后我们可以编辑一个新的这样的一个模块。那我们这里也是一样, 就是我们可以编辑一个内容是什么?就首先把这个刷新数据的话变成像那个模块,然后在另外的一个模块当中,然后不停的调用自身,然后每五分钟执行一下啊,每五秒钟执行一下,那么就提升了我们这样的一个模块的一个执行的速度。 所以原则上的话我们就可以通过这样的方式来突破说,哎,我没有办法实现啊。一分钟以下的这种刷新是可以的。 那这个的话其实我们利用刷新的话得到相对的结果。 ok, 那这个的话就是我们在这里面分享给他的内容,我们下节课再见。拜拜。

大家好,今天和大家分享一下如何在一个色当中创建一个 vba 程序。要编写 vba 程序,首先我们要打开开发工具的选项卡,我们点击文件选项卡,点击选项按钮, 在一个色选项当中,我们点击自定义功能区,然后我们找到开发工具,然后把它勾选上, 点击确定按钮,可以看到我们这里多了一个开发工具的选项卡,点击维修 bask 按钮,打开编辑器,在工程管理器中,我们右键点击项目名称,点击插入按钮,插入一个模块, 我们将 vba 代码写在该模块当中。为了方便查看,我们调整一下编辑器的字体,点击工具菜单,点击选项按钮,切换到编辑器格式选项卡,我们来调整一下字体的大小, 点击确定按钮完成,然后我们来开始编写代码。首先我们用 sap 关键字来定一个过程,输入 sub, 然后我们给这个过程起一个名字,输入一个空格,然后我们给他起个名字, mi first a p p。 名字可以使用英文,也可以使用中文,根据自己的喜好和其他的过程不要重名就可以了。然后我们添加一个英文的小括号, 按回车键完成,它自动会添加一句 entersab 的代码,也就是这个过程的结束标记。然后我们输入代码 msgeox, 空格一对英文的双引号, 然后我们在双引号的中间添加我的第一个 v b a 程序,这句代码的意思是弹出一个消息框,并在消息框中提示我的第一个 vba 程序。程序编写完之后,我们点击运行按钮,查看程序是否正常运行,可以看到程序可以正常运行,没有问题, 那我们在表格当中如何对这个程序进行调用呢?我们可以在开发工具下点击插入按钮,然后我们插入一个按钮, 在指定红的调框当中,我们选择我们刚才编写好的程序,点击确定按钮完成,然后我们再点击这个按钮,他就可以调用我们刚才编写好的程序了。好了,本期的视频就给大家分享到这里了,你学会了吗?

大家好,我是老吴,欢迎观看一个 c v b a 入门开窍课程,这节课是事件过程的第十节课,我们在这一节课学习史莱克新劝举这个事件呢,我们在之前的课程里有提过这节课呢,我们就用这个事件来做一个应用,比如说我现在选中一个区域, 好,他就会标注这个最大值和最小值啊,最大值就是用红色来标注,最小值用绿色来标注。并且呢在这个状态栏啊,就是在这个地方会出现最大值是什么值,并且告诉我这个最大值的地址是第三单元格,最小值则是 位置是 b 八单元格,然后我再选,比如说我这样选一下,哎,他就变了,对应的这个状态栏的地址和直也会发生相应的改变。 好,这个效果是如何完成的?我们来看下代码,我们把这代码呢全部删掉,重新写一下。 好,首先我们选择这个事件啊,这个事件是默认的第一个,我们要判断我们选中的这个区域呢,是否有这个数值,如果没有数值呢?比如说是中文或者说字母,我们就不需要触发这个条件了,那这个怎么来做判断呢? 如果你工作表函数比较熟悉的话呢,我们使用炕的这个函数就可以统计包含数字的这个单元格,我们先到这个工作表里面来试一下 啊,就是这个亢字啊,我们来看下这个注解,计算区域中包含数字的单元格个数啊,就是这个亢字,他跟我们在这个 vba 里面使用亢的呢,不一样啊,因为 vba 我们亢的这个属性呢,是 统计,而现在这个呢,他是统计包含数字的单元格啊,这个非常重要。好,引用工作表函数 方形,然后再是 ctrl 好统计的区域呢,就是这个 好,我们前面加上这个衣服啊,如果这个统计的区域等于零, 那么如果等于零呢?我这个状态栏就不需要显示任何东西了。这个状态栏的值应该怎么来设呢?就是 wk 选他的一个属性,我们来数一下, 二百,可以选点 stylesearr 啊,就在这里我们把它设置成空,如果选择的区域 里面有数值,就是 x, 依然是引用工作表函数统计最大值,这个如果是工作表函数比较熟的呢,就知道了啊, max 啊,统计这个区域的最大值,然后把这个最大值呢给到一个变量,比如说这个变量啊,我就叫最大。好,我们在这里做一个断点,回到表格中,比如说我现在选择的是一个不包含数值的单元格, 来看一下本地窗口,现在可能是返回零,所以呢,就直接把这个状态栏呢设置成空,就是不显示啊,这个过程就结束了。如果我选择的是一个包含有数字的区域 啊,这个时候就会来到 l 四这里,然后去找他的最大值啊,最大值,再给到这个变量啊,三十六,来看一下是不是? ok, 这四个值呢,最大值是三十六。 好,我们获取到了最大值之后呢,我们第二步就是要获取这个最大值,他的地址是什么,我们可以通过快的来获取 啊,他给他,然后放一点去查找这个值,他就会找到这个单元格,我们用一个变量来接收这个单元格,这个变量我就取个中文的名字,叫最大单元格 啊,就是这个变量可以来做个声明,定最大单元格 ig reng 啊,同样的呢,待会我们还要用个最小单元格,也是声明层这个润卷,所以我提前把它声明好, 按着顺序好,现在我们就获取到了这个最大单元格啊,接下来就有两个内容了,第一个内容就是啊,我通过这个最大单元格,然后再获取他的地址啊,就是, 然后把这个地址呢给到一个变量,我也取一个中文名叫做最大地址, 就是最大单元格的这个地址。 ok, 我们再来测试一下,好比如说我选择个区域呢啊,即便这个区域是包含中文也没关系,我们选一下看, 然后回来测试一下啊,首先找到这个三十六,然后用这个快的找这个三十六,在这个托给他的里面找 啊,就找到了。现在这个变量呢,就是这个最大的单元格了,然后把这个最大单元格的地址啊,就是复制给这个最大地址这个变量 啊,最大地址就接收到了第三,但是现在呢,他是一个默认的这个绝对引用的这个格式啊,前面有个美元符号,这样看上去呢,不是那么一目了然,所以呢,我们在这里 这样设置一下,好,再来演示一下,选择一个区域, 好,接收到了。第三, ok, 好,接下来我们还要把这个单元格设 设置成一个颜色啊,这个颜色我们就用红色最大,用红色最大单元格,然后点英泰瑞啊,然后再点卡乐英 x, 然后再把它设置成红色啊三, ok, 接下来呢,我们就是找最小值了啊,这个步骤是一样的,我们先把这个呢全部复制一下 啊,把它粘贴到这里来,好,我们控一哈。好,最小值呢,就是把这个换一下啊,这个函数我们就不是用最大了,用这个啊 最小值来找这个托给他这个区里面的最小值,然后把这个最小值呢负值给这个变量,这个变量我改一下啊,叫最小。 ok, 然后我们再找这个最小,找到这个单元格,然后用 用这个变量来接收啊最小单元格,然后我们再用最小单元格他的地址,然后给到这个变量啊,这里都改一下 小,这里也是啊,最小地址,这里也是最小单元格,然后再用这个最小单元格呢,把这个值设置成 这个就不是红色了,我们用这个绿色啊,这个是代表绿色。 ok, 我们现在来测试一下啊,比如说我现在选择一个区域, 哎,他就会显示了啊,最大值是三十三,最小值是一十八。好,但是现在有个问题,就是我之前设置的呢,他没有清空颜色,还在这地方,比如说我再选,哎,他又会来一个,所以我们 在这个设置之前呢,我们先要把这个整个区域先把它设置成这个无填充式,所以我们要在前面呢写上 啊,在这最上面呢,我们先写上啊, b 二到看一下啊,就这个区, b 二到 f 一十三, f 十三, 然后把这个区域的,那我就不梳了,投下来印泰瑞啊啊,就这个区域 把它设成零啊,零就是代表没有填充色。 ok, 我们再来测试一下,比如说选择一个区域啊,这个时候呢他就 把其他清空掉了,好,我再选择一个区,哎,就来了。 ok, 好,我们接下来就是把这个我们获取到的这些最大值啊,最小值,把它形成一个制服串,然后把它填到状态栏里面。啊?怎么来填呢?我们先来把这个制服串煮起来。好,首先是 最大值啊,最大值是什么?冒号,然后连接这个最大值的这个变量,那最大值变量的就是这个 jd 啊,连接这个变量,然后就是显示最大值的这个位置,这个位置呢,我们不能把它这个写在一起,我们用一个 这个斜杠啊,把它隔开来,然后再连接最大值的这个地址,那就是这个变量啊,这个中文最大地址。 接下来就是最小值啊,我们希望呢他们隔得开一点啊,我们就用这个双引号,我们一二三四五啊,就敲五个空格。好,我们再连接这个最小值, 最小值,然后连接最小值的变量,就是这个最小,然后再连接一个斜杠,然后再连接最小值的地址啊,就是最小地址。 ok, 好,然后把这个制服串呢给到一个变量,比如说给到这个 t。 ok, 啊,这有点长,我把它换成两行来显示,给到 t, 我们先做一个这个断点。好,我们回到表格中。好,比如 说我现在在选择一个区啊,就这个区,然后看一下直行, ok, 看下这个变量是怎么样的啊?最大值三十三啊,位置是 c 十一,最小值七,位置是 c 八。 ok, 那这个制服串呢就已经搞定了,我们把这个制服串呢直接把它给到 这个地方就可以了。好,然后把 t 复制给这个。 ok, 好,我们整体来测试一下, 好选择个区域啊,看下下面啊,最大值三十八,位置是 b 三单元格,最小值一十八,位置是 b 四单元格。 ok, 那这个效果呢?就已经完成的差不多了,接下来还有个小问题,首先第一个需要完善的,就是比如说我 选择一个单元格的时候,我就不希望触发这种条件,因为你选择一个单元格,那最大值和最小值呢?都是他。还有一个问题就是有的时候这个值并不是直接写上去的,而是公式算出来的,比如说这个值呢,他是一个公式啊,一个随机数的公式,我随便写一下 好,比如说这个公式我这样查找一下呢,就会报错,那这又是为什么?还有一个问题,就是比如说当我选择一个区的时候呢?哎,我发现虽然他已经标注了,但是我发现标注的并不准, 我这个肉眼可以看到啊,最小值应该是六啊,但是为什么是最小值标注的是三十六呢?我们来看下这个状态栏啊,最小值他知道是六,但是他找到的单元格却是第三单元格,这是为什么? ok, 那这些问题呢,就下 相当于这节课的课后作业,我们下一节课再来逐一的把这些问题解决好了,那这一节课呢,就讲到这里,感谢各位看官的支持,你的点赞是我继续创作的动力,关注我,下节课我们将学习新的内容。

今天我们来讲窗体的应用,比如说我这里点一下物料信息,待会弹个窗出来,我输入我的料号,品名,规格、单位,然后保存,保存之后自动将信息填写到我的物料信息表里面,我们来示范一下, 比方说白菜规格我随便填一下,单位我就填金好点,保存,我们看一下啊,填过来了,对不对?我们再填一个 a 零零二,呃,萝卜规格我就不填了,因为我的规格不是必填项,单位公斤啊,点保存看,这个时候萝卜就填过来了,对不对? 那这个窗体是怎么做的呢?来给大家演示一下啊。我们点开我们的 vba 编辑器,我们来创建一个窗体,然后我们将窗体的大小调一下,再将标题改一下,我们改成物料录入。 好,下面我们建四个字段。好,先建第一个靓号,改一下他的标题叫靓号, 然后我们再放一个文本框,我们将文本框的大小调一下,把位置也挪一下,再靠近一点, 接下来我们将这两个字体调大一点,分小四吧。好,这样第一个就做好。 好了,我们来复制单个品名 logo 上去对齐规格 单位,好看,这个时候靓号,它覆盖了这个文本框,我们怎么办呢?我们可以选中它右键 点下一一层。好,这个时候他就跑到下面去了。好,我们改一下他的标题叫品名,这里我们改成规格 单位,刚才我们设置的是这个和这个,这个它是必填项,我们可以再加一个标签,我们给标签改成新号, 将标签的字体颜色给它改成红色,再挪小一点,看,这样就可以了,对不对?这个位置可以,可以自己调一调啊,我这里就不调了,随便拖一下, 这样就自断就建好了。下面我们再放一个保存按钮, 位置调一下,大小拉大一点,改一下他的标题,这样说我们就要保存,然后我们将保存的这两个字也调大一点, 然后我们可以更改一下它的背景颜色, 看这个就跟我们之前做的这个就差不太多了,对不对?下面我们来给这个保存按钮加代码。怎么加呢?双击一下,然后在这里面写代码啊,这里因为我已经写过了,我直接复制一下拿来用就好了, 这样就可以了啊,我们来改一下我的窗体的名称,我们改一下,我们改成物料录入。好, 这个时候我的创立就全部建好了,代码也写好了,接下来我们怎么样给他关联到这里来呢?对不对?我们得写一个 启动代码,我们点一下这里,我们插入一个模块,然后 我们叫物料录入一,对不对?然后我们启动窗体物料录入秀,这样的话我们就能启动他了,我们看一下, 看到没就过来了,对不对?下面我们给它关联到我们的这个按钮上去,我们右键 点一下指定红关联到我这个物料录入,一确定我们来点一下它 看,我们随便填一下啊,保存看就填过来了,对不对?

别再手动点击数据全部刷新,可以使用 alt 加 f 四一调用 v b a 编辑框,选中 workbook, 选中 open 函数,输入 active, 点 workbook, 点 refresh all, 关闭保存,现在用于测试,打开测试文件,将数据内容改为 test, 保存关闭。重新打开汇总表格, 打开后表格将进行自动的数据刷新,还可以进行手动的数据刷新。打开 vba 编辑框,插入模块,选中模块, 创建手动自动刷新功能,进入数据刷新功能,然后点击保存关闭。再 开发工具选项栏下选择插入一个按钮,绑定按钮,调用手动刷新功能,并将名字改为数据刷新, 这样点击数据刷新按钮,数据将进行单次的刷新。还有一个更酷的功能,可以实现自动化的办公。先创建数据刷新功能,同时加入数据验证功能, 使单元各内的数据每次刷新的时候会自动加一,使用靠函数调用其他功能。 在创建延时功能,使用 ontam 函数,间隔两秒进行一次自动的刷新。点击保存关闭,同时在开发工具插入按钮,新建 一个按钮,绑定自动刷新功能,选择确定同时将按钮改名为自动刷新。点击自动刷新后,数据将进行规律性的自动刷新。恭喜大家技能点获得成功!

bba 自动刷新公式之前发布的这个自定义函数用来自动计算带颜色的单元格函数桑卡拉有很多粉丝反映不会自动刷新公式。 不会自动刷新的原因是因为我们单独改变单元格的背景颜色,不会触发 excel 表格的自动计算功能。 只有当我们改变单元格的值的时候, excel 才会触发自动计算功能。要解决这个问题,还是需要用 vba 代码来解决。点击开发工具,进入 vba 编辑窗口, 双击需要写入自动计算的表格,会弹出代码窗口,接着点一下左边这个通用下拉框,选择 workshit, 然后右边下拉框这里选择 selection change, 自动生成这个事件。代码事件就是当我们在 excel 进行某一个操作,这个事件是单元格选择事件, 当我们用鼠标或键盘选择单元格的时候,则会触发这个事件。我们在这个事件中写入一个自动计算代码 calculate 公式,就会自动刷新计算了。 因为 excel 没有更改背景颜色能触发的事件,专门来写一个更改颜色触发事件需要很多代码,比较麻烦,利用这个选择单元格事件来触发自动刷新公式就可以了。

哈喽,大家好,今天呢,我们要来处理一个工作表的事件,我们要实现的一个效果就是当我选中某一个单元格的时候,这个单元格的这一行, 对吧?要成一个高亮的显示,然后他所在的列啦也要成一个高亮的显示,在 wps 当中是把这个功能已经 做出来推送到前台的,那么在我们的 office 当中呢,是需要你自己去做一些设置的,要么呢,你就在网上去搜一下教程, 不通过 vba 的代码也可以去实现他,但是他那个实现的话,也是需要有一个代码的自动运行的。那么这里我们就来讲一讲怎么样去用 ab a 代码实现这个高量的显示。在做这个之前,我们得先学一个工作表事件,这个工作表事件是一个 stex exceng, 啥意思呢?就 是当我的单元格发生变化的时候,他会有一个事件产生,比如说啊,现在我没有对他进行任何单元格的限定 啊,我想要把单元格的地址打出来,或者是打打印出来单元格所在在的行,或者是所在的列,我选中这张工作表的某一个单元格的时候,那个单元格就在这里,就叫做他给的,他给的 sur, 所以呢,我们可以用他给他表示当前活动单元格的一个变量,他已经给我们类似好了,这个变量点空了啊,列标把它打印出来, 然后我们再打印一个行标,因为我们要用这个行标和列标来写来确定他到底选中的是哪一行。你看我现在不是就已经选了一个吗?对吧?选了一个,他给我说什么一啊,先不管他,因为我选的是一整行,大家有没有发现啊?我没有对他进行任何的 去设置,然后你看他会一直一直的去打一个行标,再打一个列标,先不管他行标和列标对不对啊?这个是行标,我们重新来选一个单元格啊,比如说我选到 b 二单元格或者是 b 二单元格,那 他的行标对这叫一行一行的啊。然后行标应该是二列标的话, ab, 那他也应该是第二列对,我们选一下第二单元格,第二第二对,再选一个一一二单元格或者是一三单元格,一三单元格呢,是在第五列,第三行应该是他先出来一个五,再出来一个三 八五三,通过这样的方式我们可以获得选中的单元格的行标和列标。首先我们来整理一下我们的逻辑,就是当我们没有选择其他单元格的时候,其他单元格的那个填充式的话,他是要 没有的。当我我们选中某一个单元格的时候,他所在的整行和整列啊,整行要被填充一个颜色,然后整列呢 也会要填充一个颜色,像这样子,假设我们现在就让他填充一个黄色,那么这样的操作我们应该怎样去做呢?对吧?你每一次变动单元格的时候,你之前填充的那个颜色还还得那个消失掉,所以我们要事先录一个红来获取一些填充颜色的代码,我们来录制一下给他取名字 啊,首先呢,我们是要把所有单元格的颜色给他取消掉,无填充啊,取消完了之后,我们比如说单元格选在第七, 然后他的整行给他填上一个黄色的高亮显示,然后整列给他填上一个黄色的高亮显示,然后这样就填充完了,填充完了我们来看一下我们的代码, 代码在模块当中。好,首先呢,我不是取消了所有单元格颜色吗?他这里有一个所有单元格选中啊, cs 点色 max, 然后选中的那些单元格的英特瑞就是内部的一个拍腾等于 xl, 那有时候内部的一个填充是没有的。紧接着这里我选中了第七行,看到吗?第七行整行是怎么表示的?就是肉字,然后七到七, 他的一个樱桃肉点拍同等于 xl。 sorry 的啊,就是我选择的那个颜色,然后后面还有一个卡了英,但是你看一下这个卡了英的就是一个颜色的序列啊,他写的是一个这样子的啊。 然后我们再接着看一下下面的吧,有一个线开了,我们待会可以看一下,如果说我们只要这样的一句话,他会有什么样的效果。在这里我们先来做一个操作,就是获取一下现在所选颜色的 rgb 值,在这里啊, rgb 值二五五二三零幺五三,这个是我们的一个 rgb 值, 待会我们可以去换的,我们在这里可以直接给他写上一个 rgb 值,就是在这里填充颜色的时候。好,接着我们回到我们的这里, 首先我们要做的第一步就是取消所有单元格格的颜色填充,我们把刚刚的那句代码抄过来啊,我们给他简化一下,先抄过来,抄过来之后我们再接着改。在这里 cs 点是 max 啊,他的一个下面的一个樱桃肉,把它抄过去, 可以直接抄的,英特尔点什么呢?点点看到吗?他下面有一个卡尔,英特尔下面有一个 p a t t e r n, 对吧?然后他其实这里的卡尔也是可以的,我们先按照我们录视红得到的这个 p a t t e r n 啊,就等于 xl non e, 取消所有颜色,然后下面的这些我们先把它注视起来,万一我们组合的不对呢?现在看一下,我们如果说单元 选中区域发生变化的时候,这些颜色能不能取消掉,现在是还有颜色的啊,我们随便点一个啊,看吧,取消掉了是吧?我们随便来给他画一些颜色啊,换哎,看可以了吧?然后把这个删掉,接着来第二步啊,行标和列标就是在这里 看啊,然后我们不是要整行的去给他填充吗?在这里我们把这一个弄过来,弄过来之后我们来看怎么样去改。 这里他所在的行是第七行到第七行,我们来看一下我们要怎么样去处理他。首先行标的话,我们通过他给他点肉已经可以获得,所以呢在这里我们要对他进行一个处理,也说第七行到第七行之间中间不就只有一个冒号吗?冒号的话我用 引号双引号给他引起来,然后连接上后面的变量,这个变量的话就是他给他掉肉啊,前面也是前面也有 一个连接符号,然后通过这公式的组合一样把它分别的组合起来啊,然后也是我们把这个是 max 给他换成这个英特瑞,他英特瑞什么呢?他这面有一个,下面可能就比刚刚的那个要多一点啊,英特瑞点拍同等于 xl solo 里的啊, 这是什么意思呢?我们不懂。我们先来试一下,就是让这个 party 等于这个 sorry 的看看一下会有什么样的变化,如果不太对的话,我们再把下面的给他添加上,看一下哪一个代表颜色,然后通过。呃,这下面的一些英文单词,单词啊,我们可以看到就还有颜色的,有一个卡拉音的, 然后还有个卡了,这有一个什么线,大概是主题的意思,有一个主题颜色,然后这里有一个颜色的序列。我们先来试一下啊,先不管,先把它标注上,在你不懂什么意思的时候,你就一个一个的去试。哎,好像什么反应也没有,说明 这句话不对。嗯,我们换一句,我们把这个拍天开了音的给他抄上, 放出杯。好,我们现在再来试一下,还是什么都没有,套上的时候还是啥也没有。然后我们再来换一下,看一下是不是下面的这一个好主题颜色。嗯, 再来试一下,看了吗?他现在是这样的,颜色有了,说明我们需要的那句话是什么呢?就是这一句,然后我们看一下,如果说我们把一二三这三句都要上,会有什么样的效果呢?把它复制一下,哎,把它粘贴粘贴两句。 今天两句之后呢,把这个抄过来, ctrl ccov, 因为我们发现可能影响颜色的就是第三个,但是我们不知道前面两句他到底是什么意思,我们抄过来看一下,因为这个颜色和我们刚才的那个颜色不太一样啊,还是一样的,效果是一模一样的,那说明我们的颜色影响颜色变化的 就只有这一句话,我们把这一句添加到这里,添加到这里之后,我们看一下我们的列啊,把这一句抄过来也抄过来啊,这里是 d 到 d, 就是抠了么?地到地,这里也是获取一个列标,我们刚刚不是获取的是行标吗?然后现在这里获取的是列标,我们先把这里面给抄过来, ctrl c, 一个 ctrl v, 因为他字母 d 合理获取行标的那个行号是一样的啊,我们就不用再用什么这里把肉改成 colo 了。好,接着因为它的颜色和上面是一样的嘛, 所以我们直接把这句话抄过来,就是整行和整列的一个颜色的选择。好,我们来看一下啊,现在是一行有啊,他说应用程序或者是对象错误啊,说明这句话也还是有错误的。好,现在我们来看一下我们错误的地方啊。首先我们通过代码获取到一个整列的显示,是这样的, 从 d 到 d, 他获取的是一个字母,字母是字符型的,所以呢,他在这里啊用了一个双引号把它引起来,除了这样表示,其实我们可以直接在这里写上列标,就代表具体的某一列, 所以回到这里,我们在这里就不需要从第几列到第几列,这样去给他限定上一个字符。如果说你要把它弄成字符的话啊,得先把数字的列标给他转化为字母型的列标,然后再通过这样的一个组合,那么这样呢,比较繁琐,你还要去学一下怎么样去通过一个数字啊,转化成一个字母, 我们在这里直接把后面的这个省掉,其实前面的这个行标也是一样的,我们可以直接就通过某一行的一个数字来代表某一个整行啊,然后把它恢复一下,这样我们再来试一下我们的代码啊,看到了吗?现在就可以了,除了这样子去操作之外,我们现在看到我们的颜色好像有一点点不太对,我们 刚刚不是写了一个 rgb 值吗?我们来看一下,我们把这里的开了换成一个 rgb 啊,就这样 rgb 他 rgb 完了之后,他这里刚刚有一个啊,有一个三个值, 我们把它填上,二五五二三零幺五三二五五幺五三。我们来试一下,看一下我们的这个 rgb 值能不能也把它颜色给填充上,肯定是可以的。哎,下标越界啊,下标越界,哪一个下标越界呢?他现在程序没走完, 我们来看一下 f 八下标越界了啊,因为这个 cm 卡了,他是因为这个 cm 卡了,主题颜色他是不支持那个 rgb 的,但是如果说我们把这个英特尔卡了的线给他取消掉,直接来一个卡了,这样应该是可以的。 f 八一个运行,看到吗?哎哎哎, f 五运行完,哎,看了吗?这个颜色就是我们刚刚取到的那个颜色,比这个深色的要浅一点啊,因为我比较喜欢浅色系的,我不太喜欢 深色系的,那我剩下的还有一个,对吧?我同样的给他抄过来,就直接变成这样啊,看到吗?也是可以操作的,刚刚那样可以操作,现在这样也可以操作啊,来看一下,哎,就变成了我一开始想要的那个样子, 对吧?好了,那我们的这个高亮显示就已经完成了。好,这个代码我待会可以贴在评论区, 希望如果说有用的话啊,就三行代码啊,我们来再理一下我们的思维逻辑啊,首先呢,我们去获取了一些代码,然后获取完代码之后,我们发现有用的是哪一些啊?这一句 有用啊,就是 cl 字典是那个的,我们还可以把它组合一下,就直接组合为我们刚刚的,在这在这里的这一句,英特瑞点拍等等 xl 内部的填充式没有,接着我们获取了整行啊,有用的其实是这一句有一个,有一个主题颜色, 这一句是有用的,前面两句我们发现没有用它也没关系。好,下面的有用的其实是一样的啊,通过这个声卡了之后呢,我们想要就说用一些声卡了,他是主题颜色,主题颜色的话肯定没有太多供你选择的主题颜色,所以说你要去换一些你自己觉得好看的颜色的话,你就需要用到一个阿基壁纸, 那用 rgb 值的时候,那个 cm 卡了主题颜色就下标越界了,因为他没有这个 rgb 的对应的值去产生。这里我们对他进行了一些修改,发现直接点一个卡了,然后等于 rgb 也是可以的啊,通过 rgb 值呢,就可以就可以换成 你喜欢的颜色啊。我们获取 rgb 值是怎样获取的?打开 qq 或者是微信,按住 ctrl a 进行一个截图,截图完你看下面他有一个 pos, 然后还有一个 rgb 啊,对吧?我们点中任何一块社区的话,他就会有这样的一个相应的选择, 这样我们就可以获取一些我们喜欢的颜色,只要把它的 rgb 值给写上就可以啊,希望对你的工作有所帮助。这个功能的话还是挺实用的。
![vba+winapi 动态目标的位置获取及鼠标跟踪 [不务正业的VBA4] #vba #定位 #屏幕定位 #window #chrome](https://p3-pc-sign.douyinpic.com/image-cut-tos-priv/62fb44a0c79dc198c0113ae5aa3dfc3f~tplv-dy-resize-origshort-autoq-75:330.jpeg?lk3s=138a59ce&x-expires=2086678800&x-signature=zOHV70z%2Fn5t2OwEO28HaWPQAvEM%3D&from=327834062&s=PackSourceEnum_AWEME_DETAIL&se=false&sc=cover&biz_tag=pcweb_cover&l=20260217172123FEF194D9C8F71B86EDD3)
今天来尝试目标的定位,首先是静态目标 已经定位到了,下面换个位置, 下面我们来尝试不同速度的动态目标定位。首先是时像速每秒的移动速度, 可以看到鼠标跟踪的效果还是可以的, 下面我们尝试一百像素每秒的速度, 这个速度下的追踪效果有些一般,只能说鼠标基本上能处在目标轮廓内, 这个速度下的追踪效果只能用离谱来形容,原因是鼠标位置刷新频率过慢,等鼠标位置刷新时,跟踪的图标已经离得很远了,因此算力不够。算法操。下面我们来尝试修正算法, 我们先从一百像素每秒的速度开始尝试, 这个算法对低速目标的修复效果有限。 最后我们尝试下高速目标的修复效果, 在一千像素每秒的速度下可以说有一定的修复效果,不过算力不够是硬伤,靠算法是不能弥补的。 感谢大家的观看,大家有什么需求和想法可以和我联系,下次再见。


啊,大家好,欢迎继续学习 xo 技巧精粹系列视频教程, 这节能给大家来看一下如何利用 vba 代码呢去自动化高级筛选的操作啊。 xl 里边的高级筛选功能呢,是非常强大的一项功能,它可以按照我们指定的条件啊,单条件或者多条件都可以啊,去快速的筛选我们所需要的目标数据,而且从这个筛选速度上来讲呢啊应该是 xl 里面最快的一种筛选方式,比我们普通的这种下拉菜单啊,下拉点选这个条件的筛选方式呢,要快的多 好,我们先来看一下它的基本操作啊。呃,我们首先呢有这么一个非常小的一个模拟数据集,呃,就这么六列啊,六列的数据啊,然后呢我们再假设我们需要把这里 边的这个人啊需要筛选什么的,筛选这个教育程度为大学,然后工资大于三千的啊,把这样的人筛出来啊,并且放到这一页啊,放到这一页就不在原来的数据级里边了啊,这就是高级筛选的经典使用场景 啊。这两个条件呢是兵的条件啊,兵的条件,如果说你想是尖货条件就是鱼就是货的条件的话呢,就是这两个条件呢,要错开一行啊错开一行,如果第三个条件的话就错到这个地方来第四个条件的话就要错到这个地方来,这是指的货的关系啊,如果是雨的关系的话呢,那就是 通通放到一行就可以了啊,你就往右放就可以,这都是语的关系好啊,这是他简单的一个摄像逻辑。然后我们,呃教育程度里边我们要满足大学,然后工资要满足大于三千啊,一个细节的地方,注意啊,这个大于号跟小于号呢,一定 要切到这个英文状态下啊,在键盘上输这个大于号,小于号不要用自带的中文输入法来输啊,因为中中文输入法输入的大于号小于号呢,他实际上是字符,他并不是运算符啊,这个会导致我们的这个审核结果呢出不来。 好啊,然后呢,我们呃设定完条件之后呢,就直接到数据菜单,然后中间的排序一筛选,然后高级排序一筛选,里边高级 啊将首先选择第二个选项啊,这个我以前的视频里面讲过,所以我就给大家重复一下就可以了啊。 筛选将摄像结构复制的其他位置,选第二个选项,然后列表区域的话呢,我们直接来切到原始数据啊,原始数据啊,选中第一个单元格, ctrl shift 右箭头下箭头啊啊,选完之后呢,然后条件区域 区域的话呢,我们就把刚才设定条件的这两个,这两个条件啊,就是四个单元格全选中啊,然后复制到什么地方呢啊,复制呢一定要注意啊,就是要 不知道一个空白的地方啊,如果这个地方有数据的话,这个地方有数据的话呢,他会报错,或者说他啊不会替换在原来的数据啊,就会你看到的数据并不是你想要的数据 啊,所以这个时候呢一定要注意,就是要放了一个能够承得下我们的目标数据的一个空白的地方啊。好,然后我们条件设定完之后啊,条件设定完之后的话直接点确定啊,这个符合条件的也就出来了,你看教育程度都是大学啊,然后呢这个工资呢都大约三千, 非常方便的用拆迁方式,但是非常可惜,就刚才提到的说如果说你的这个条件 改变了啊,比如说我不,不大于三千了,我大于两千,呃,两千五啊,大于两千五 啊,你改完条件之后呢,这个数据呢并不会自动的变化啊,也就是说他的筛选呢是一次性的啊,并不是说那种呃后台查询似的,他是一次性的给你出结果,然后就不管了啊,这个呢就会造成一点点不变啊,就是我们如果是想改变一下条件之后的话呢,需要重新来一遍啊,才能够 得到我们所需要的数据啊,这个遗憾呢,我们其实可以用 vba 的来弥补一下啊,用 vba 代码呢,直接把这个东西呢呃来呃变成自动化的一个过程啊,我们来看一下如何去写这个代码 啊,其实也非常简单,只有一句话的一个代码啊,剩下的都是定义好啊,然后我们在 这个这张表的啊,这个工作表的底下的这个标签上啊,打右键,在他底下的这个太不上标签上打右键。然后呢查看代码啊,进入到我们的这个 vb 编辑界面啊,然后插入啊,插入一个模块 插尾模块,然后呢我们再用模块的来写我们的代码。好啊,首先呢我们来去啊定一个名称啊萨,比如说高级啊 啊闪现好,就这样吧啊好,我们回车的话呢,他会自动闭合啊,回车的话这个呃未必的,这个程序他会自动闭合,在下面给我们加上这个 n stop 啊,然后我们先定义三个边量啊,啊, dat 啊,就是我们原始数据啊, range, 然后呢?呃,条件啊, condition as range, 然后呢?这个我们的这个放目标数据的地方啊,我们这个什么叫做呃 destination 吧, that's ranch, 这样我们先定义三个变量啊,定义三个变量,然后呢我们这三个变量呢,其实都是 ran 制, ran 制的话呢,是对象变量啊,所以呢,我们要去做一个设定啊, set data 啊,这个等于 啊,谁退一谁退一,我们这里边谁退一啊,谁退一。第二 range a 一啊, a 一的话就是他左上角的这个就是整片数据左上角的第一个单元格啊,然后点 current region 啊,调康的 region 就是以 a 一为开始的,跟 a 一连成一片的这片数据啊,这样,这是第一个定义啊,然后呢,我们来看 condition, set condition 等于我们的 shit 二啊,因为这是 这个我们整个的生产结果,因为是在 c 的二里边啊,所以我们直接是来输这个 c 的二啊, c 的二点润啊,然后我们条件呢,也是在 a 一开始的啊,在 c 的二的 a 一开始的啊,然后 也是这个卡尔杰瑞镇 好啊,然后第三个啊,第三个条件, i just said destination 等于我们的还是 c 的二。第二,这个时候呢,我们就给他一个单元格就可以了啊,就给他从这个单元格开始放数据就可以了,比如说我们放 a 五,那 a 五 啊,然后我们定义完了这个,定义完了这个呃变量,然后呢?把变量设计完之后呢啊,真正干活呢,其实就是下边这一句啊,下边这一句就是诶塔第二啊,然后呢? advanced filter 高级筛选嘛啊,老鼠有点高级筛选,然后呢,接下来呢,就是我们是要做这个 xl, 他是一。第一个啊,有一个选项呢是 xr filter in place in place 的话就是在原始数据上显示实验结果。 还有一个选项呢,就是 xl filed 高配啊,就是不在原始数据上显示审核结果,而是把符合条件的审核结果呢复制到另外的我们指定的地方啊,显然这个是符合我们这个要求的啊, 所以我们就选啊 xl filter 的高配。然后接下来他会问你,你的这个条件是什么啊?我们条件呢就是 很对视嘛,我们已经定义完了啊,然后他问你,你要把数据放在哪啊?放在哪?嗯,我们的数据呢就要放在我们定义好的 destination, destination, 其实干活的其实就这一句啊,干活就这一句 啊,我们执行这一句的话呢,数据就已经就就会过来,但是呢啊,我们刚才呢,你注意到我提到过说如果我们的筛选放目标数据的地方有其他数据的话呢啊,他不会把其他数据 清掉啊,会爆错啊,或者说会出不来我们所需要的数据。这个时候呢,就是每次筛选之前呢,我们要确保什么呀?确保说以 a 五为开始,这片数据区域呢,我们先要清一下啊,先要清一下,所以呢我们要啊加一个命令啊,加一个命令 是我们的这个 ct 一点二, 这个二啊,这个二点儿 range, 这个时候呢,我们 a 五开始我给他放 a, a 五开始 az 啊, az 幺零四八五七六,就给他这么一份区域呢。 第二, clear content 啊,就克里尔就把他的整个的这个呃内 内容全给他清掉啊,全给他清掉,或者你直接用可利尔也行啊,可乐康城市也可以啊,这个什么意思呢?就是我给你的五十二列啊, a 到 z 是二十六列,然后呢? a aa 到 az 啊,又是二十六给你,给你了这个五十二列,然后呢给,一直到这个五十二列,横着是五十二列,那么 重点呢,是从第五行一直到幺零四八五七六,就是到工作表的底部这部分区域,我先给你清一下,清一下,我再做这个筛选 啊,如果你觉得这个区域不够啊,比如说你的这个数据也非常大,超过了五十二列的话呢,你可以在比如说 a z 吧,或者是你写 b z 啊, c z 啊,就是往右延伸就可以了啊,懂了这个代码就可以了啊啊,关键呢其实就是最底下这一句啊,这一句 好,我们写完代码之后的话呢啊,我们直接可以把这个界面呢关掉啊,把这个界面来关掉,回到我们的数据界面 啊,然后呢在这里边呢我们插入一个,呃,你可以插入开发工具里面的这个按钮啊,这个表达空间可以插入表达空间啊,也可以呢,直接插入一个形状啊,比如说我插入这个插入一个形状,我拖一个小 形状出来啊,然后在这个形状上呢,我写上这个啊, 刷新筛选啊,刷新筛选, 让他居中一下 啊,好放心摄像。然后呢在这个,在这个图,在这个这个形状上打右键啊打右键,然后呢指定红啊,指定红 啊,就是我们的这个高级摄像的红群,你打一点指定红的话,这个界面就出来了啊,里边就会列出我们所有的定义观的红啊,然后我们选一下高级摄像,然后点确定 啊,就可以了啊,这个时候呢,就是我们只要点一下刷新筛选,这水就出来了,你看没有,这是我们的这个符合条件的啊,大学,然后是 这样的工资啊,然后呢我们再看一下啊, 大专改一下条件刷新啊,然后你看到这个全部就是大专了啊,全部是大专了啊,我们可再换一个,比如说性别 啊,性别为难啊,还不是这样的啊,是是很难啊,好 大专难。然后呢刷新筛选啊,你看吧,这就所有的大专,然后所有的难啊,这样就实现了我们的高级筛选的一个自动化的操作啊。好了啊,这一节呢就给大家来分享到这。

下面讲解一个案例,案例是比较简单,就数据动态更新,我们看一下基本需求,这是 a 表,也就是存了好多数据,所以这个数据呢,这张表是存在这的,有的人可能通希望通过 b 表的数据修改来实现对 a 表的数据的 一个动态的调整,那么调整原则是什么?这是 a 表, a 表的数据要比 b 表少啊,那无所谓了,多少就是这样,他俩格式是一样的,所以格式呢,就是标题的顺序都是一样的啊,一一对应的,但是你不一样,无非就是增加代码处理难度, 就是在 b 表里面,我们修改数据,修改当然是这个课程一到课程十这区间的数据,如果修改完之后呢, a 表中相同姓名对应的数据,比如说我们修改 a 一这个,如果 a 一的课程一,我们的 b 表啊, b 表 a 一的课程一只是一百分发生变化,那么如果 a 表的这个 a 一课程一 这个数值小于 b 表里面这个数值对应位置数值,那么这时候就把 a 表的数值进行更新,也就是说要保证 a 表的对应位置数据大于等于 b 表, 就是这么个需求。那么我们实现这种需求呢,方法有几种啊?一一种所谓动态更新呢,一种就是我们在 b 表里面修改数值,让保证 a 表的数据实时进行动态更新。我这里面,比如说我这里面数据他俩没完全更新啊,我举个例子, 我现在这双击之后啊,这样按一下啊,这个吧,按一下回车,其实就相当于数据发生 change, 就实践了,那么 a 一的这个它就发生了变化,你看 刚才两个回车啊,双击它都发生了变化,那么我希望这个我拷贝一下,我可能我希望这一行都发生变化,这样 那么他就发生,比如说 a 二, a 二呢?为了直观一点,我可以先把它删除啊,删除完了举个例子,我这输一个九十九吧。 好,那往后大家看全九十九,那我们翻过来,靠,它是除了这前面一百大之百全是九十九,就这样一种动态的更新。好了,我们看一下啊,通过 b 表来实现呢,我们使用的就是表格 change 实践 啊,这个代码需要写在 b 表里面, b 表代码区域这地方发生变化,那么同步更新 a 表的对应的数据,这两个属性,一个是屏幕刷新,因为我们要 修改数据嘛。另外一个这是表格事件啊,这个里面可设置可不设可不设置啊,我们先设置在这,无所谓,对于这个案例来讲,只是说对于这个案例你可以不设置啊,下面对 target 就是我们在 b 表里面修改数据的时候发生数据变化区间, 这里面呢?我们看一下啊, rng 这里面的区间,我是 r, 是取你发生的,就是因为刚这个为啥要放置语句啊?再说一下,因为刚才这他给的有可能发生变化,单元格不是一个,所以说我们要对里面每一个单元格都进行变化,有可能,比如说这这地方你拷贝数据可能拷贝几行几列过来,对吧?比如考这个,考这一行或几行几列 过来,可能有这地方拉的是一列,可能有拉的是一行几行,所以说可能他给的是比较多,所以用放意式的逐个进行变利,这 r 是获取这变量的行号,这是获取列号,然后呢行号呢?我们上面是标题,所以说只有第二行以下发生变化时候,我们才 执行下面代码。所以说判断 r 大于一, c 大于二啊,就不要等于 c, 我们大于二吧,因为一二二是是这里面的姓名啊,大于二,然后另外一个对应的 这一行的第二列单元格,也就是姓名,这个我们要不能等于空,对吧?因为姓名是两个对应的关键字,他不能等于空,所以判断一下这三个条件要保证同时满足 我们在执行下面的操作。现在操作使用的是创意的函数表格,发言的函数啊,大家可以录制去看一下这个对 a 表的第二列有所谓姓名列发言的,查找这里面的 对应的第二列这里面内容。然后呢查找是对应的,是能匹配的,是单元格匹配。下面就是判断 r n g 就是 r n g x 啊, 这是发音的结果,他是不是 nothing, 如果不是 nothing, 意味着在 a 表里面找不到了,避免我在这边填了个东西, a 表里面没有对应关系,对吧?这样是表证有对应关系的。然后这个时候我们将 a 表对应单元格, 就是同姓名同英行啊,这对应行,那 c 列,因为刚才说了他这标题都相同的,所以说他列号肯定相同。比较二指的大小,如果 a 边里面的数 数值比这个 b 表里面要小,那么就把 a 表对应的数值更新成这张表啊,更新成 b 表的 a 表的数值得更新成 b 表里面内容。好,这样是这样,我们演这个功能,我们已经演示完了,没有其他和演示的代码比较简单,我们先把这个注视掉 好了,那我们刚才说了,这是在 b 表里面逐个实现。另外一种呢,我们可以考虑 a 表, 我们 b 表随便改,改完之后,当我们要看 a 表的时候,就存在激活 a 表,那么在激活 a 表的同时,我们在便利下 b 表,把 a 表进行更新,这是一种方式啊,就是用的 activate, activate 这个属性, 好了,我们把这代码除以取消,这个就是当写在 a a 表代码区啊,这当 a 表被激活被激活 之后,我们要执行这串代码,这串代码功能干嘛?就是说啊,先写上代码,就是将这个字典对象后期绑定设置一下,然后像 br 数组呢? 移用区啊, b r b 表移用区复制给 b r 数组,然后用字典取姓名,也就 b 列,将姓名作为见值,行号作为值啊,复制给字典。下面呢是将 a 表的移用区域 复制给 a r 数组,然后对 a r 数组进行便利。便利的时候我们就判断你就 a r 数组对应的第二列,也就所谓的姓名,再也就 b 这 b r 数字是否存在,通过字典来判断,如果存在的话,那么我们就取出这个姓名在 b r 数组里面所对应的号号就 r 好,然后下面再对列进行便利。第三个到最后一列平便利比比较二的大小啊,说明我们加了 vr 啊。就是如果 br 里面的数据比 ar 里面对应列数据大,那么一样把 ar 数字的数值进行更新,对应位置进行更新,最后将 ar 负值回 a 表引用区域,这样就实现了一次性整体更新,实际上这种大家看需求吧,具体根据你们的实际情况来进行使用。那我们现在看到这是 a 表里面好多这种一啊,我们现在把 b 表激活,这里面好多我们都设置啊,比如四五这面的设置比较大,至少不是一,那我们当激活一表看一下,看到了这面数据就对应瞬间更新了啊,也是实践了一个 所谓的数据动态更新啊。代码还是比较简单的,大家考虑一下应用环境,这个相关附件呢会传在 b 站,大家可以对应下载。然后另外再多说一下嘛,就是有的人有的网友找我啊,我说你要是看着视频,如果你的代码还有问题,可以发过来,但发过来有个前提,你的代码 跟你这个表格格式都有一个对应关系,就是像视频上录的是这样,你又要有个对应关系,你不能说你把你的表作为另外一个格式,然后套着我当前的代码, 对吧?因为之前也是有雷同的啊,说这个事,然后拿来我一看,你那个表格格式也对不上代码呢,也也是, 怎么说好呢,也是与预期的匹配差的挺多。这个时候呢,还跟我说,就是就是看你视频,我照着来的,然后, 然后呢?我后来就跟他说了,我说你再看视频看一下,就还是这个意思,如果你看着视频,如果你的文档以及代码跟视频上真的是一致的,还有出入,那可以看一下,如果你拿个另外的东西,还拿我的代码上,靠他不是一样的东西,他未必能得到你预期的结果啊。