想要让Excel办公效率有质的飞跃,就一定要学会VBA!

 2024-01-14 09:03:38  阅读 0

文章来自该网站的生活撰稿人波导终结者

之前我们在群里讨论过为什么Excel基础函数教程会在月经首页火起来。 结论是:基础用户很多。 当我看到它时,我想到了这一点。 以后可能有用,就点进来收藏了。

因此,对于更高级的东西,比如VBA的讨论,不会很流行,因为大多数人认为自己一辈子都用不到它,所以不会点击收藏。

不过这次正好征文,基础就是其中之一。 如果你只是写VB,没有人会看,所以我们结合实际,写一些简单的VBA。

1.打开VBA

首先,VBA的全称是Basic for,本质上是一种嵌入到应用程序中并使用VB语法的脚本语言。

脚本语言的优点是保存后立即生效,无需编译。 所以在调整一些细节的时候非常方便。

然而,由于VB是微软自家的产品,给予的权限比LUA等纯外部脚本要大得多,所以安全问题一直是个问题。 事实上,VBS病毒一直存在。

所以如果想要顺利使用,有一些前置步骤是需要做的。 这里我们以2007年版本为例。

vb 函数返回值为 type_函数返回值为指针_函数返回值为数组

首先,出于安全原因,默认情况下不会发布任何 VBA 内容,甚至按钮也不发布。

我们首先点击左上角,选择Excel选项。

vb 函数返回值为 type_函数返回值为数组_函数返回值为指针

来到,找到右侧的 Tools选项卡,找到Basic,拖到你想要的地方。

函数返回值为数组_vb 函数返回值为 type_函数返回值为指针

如图,我直接拉起左上角的快捷栏,点击这个按钮,就进入了VBA编辑界面。

函数返回值为数组_函数返回值为指针_vb 函数返回值为 type

另外,默认的XLSX格式不包含宏,因此必须保存为XLSM格式。

vb 函数返回值为 type_函数返回值为指针_函数返回值为数组

另外,有时我们会遇到脚本无论如何都没有响应的情况。 这通常是安全设置问题。

首先,转到选项并找到信任中心。

vb 函数返回值为 type_函数返回值为数组_函数返回值为指针

只需添加放置脚本文件文档的目录即可。

vb 函数返回值为 type_函数返回值为数组_函数返回值为指针

另一种方法是直接在宏设置中默认启用所有宏。

比较适合文件较多的朋友。

2. 在Excel中突出显示行和列

函数返回值为数组_vb 函数返回值为 type_函数返回值为指针

首先我们通过之前添加的按钮进入VBA界面,默认会来到这样一个地方。

、2 和 3 是三个可以具有独立代码的工作表。

最后一部分的代码是整个文档共享的。

这里我们使用全局的。

双击此项,默认会生成一个函数。 该函数是对象的默认函数Open。 我们不需要它,可以稍后删除。

vb 函数返回值为 type_函数返回值为指针_函数返回值为数组

本例中使用的函数,顾名思义,是在工作表的选定区域发生变化时触发。

Sub(ByVal Sh As、ByVal As Range)

细胞..

=RGB(127, 127, 0)

和..

.添加,,“真”

.项目(1)..颜色=

结束于

和..

.添加,,“真”

.项目(1)..颜色=

结束于

结束子

代码如上。

函数返回值为数组_vb 函数返回值为 type_函数返回值为指针

可以在 = RGB(127, 127, 0) 中更改颜色。

这个效果只能用VBA来完成,非常适合在读取大量数据时避免刺眼的错误行。

不过,需要注意的一点是:

VBA 所做的所有修改都是不可逆的,所以要小心。 就像代码中一样,如果单元格的格式被修改,那么如果不编写额外的代码来存储和恢复它,就无法恢复它。

3.Excel中有用的自定义函数

vb 函数返回值为 type_函数返回值为数组_函数返回值为指针

首先,自定义函数必须写在模块中,所以我们右键,插入,模块。

函数返回值为数组_函数返回值为指针_vb 函数返回值为 type

然后,我们编写一个简单的函数。

这个功能非常简单。 它将引用单元格的值作为文本取出,然后将其与字符串“ ”连接起来并返回它。

VB函数的返回值赋值方法比较特殊。 大多数其他语言使用XXX或类似的东西,但VB将函数本身分配为变量。

总之,这是最简单的自定义函数。

注意,函数一定要加在前面,方便外部调用。

返回表,键入等号,然后键入自定义函数的前两个字母。 可以看到系统已经自动完成了自定义功能。

输入后,按 Enter 键即可完成。

正如您所看到的,该单元格的内容是引用单元格的内容,后跟单词“波导终结器”。

有的朋友可能会说这个功能太简单了,为什么不做的更花哨一些呢?

然而,每个人的具体需求都不同。 我只能教你如何制作自定义函数。 具体怎么做,只能根据自己的需求编写具体的代码了。

4.让Excel成为工作场所真正的生产力工具

我曾经为一家网络游戏公司写剧本,毫无疑问我要和策划人员进行很多沟通。 很多时候,如果规划方没有敲定事情,我们就无法开始工作。

如果策划者提供的内容太模糊,你就得回去和他重新确认。 但如果过于详细,比如涉及到方案核心的一些价值观时,很多策划者就会感到困惑。

函数返回值为指针_vb 函数返回值为 type_函数返回值为数组

比如说我们现在想要制作一些新的怪物,从程序的角度来看,表中的几十个字段各有各的用处。

从剧本的角度来说,如果你不提供相关的数值规划,我也无法亲自给你填写。

从规划的角度来说,对他们有用的就只有那么几个:血蓝色的攻防外观等等。

所以我用VBA做了一个小工具。

首先,列出所有字段,列出默认值,并筛选出对规划有用的字段。

点击左上角“生成怪物数据表”,这些有用的字段就会被过滤掉,生成一个EXCEL表。

规划只需要根据这个表中的数据填写数值即可。

但如果只是规划、填表的话,那么规划自己就可以完成,这样的生产效率并不会得到实质性的提高。

效率的提升在于一键生成数据库刷新的SQL语句。

函数返回值为指针_函数返回值为数组_vb 函数返回值为 type

点击生成或数据按钮后,刷库语句输出到文本文件并自动打开。 复制后即可使用。

在最初的过程中,每个计划提供的数字格式都不同。 当然,不可能一键导入。 因此,对于每种情况,脚本都必须手动将计划给出的数值一一填入。 填写完之后还要检查,然后再检查。 刷机库测试...

使用VBA后,从规划设计值到成功用脚本刷数据库的整个过程的时间从大约0.5天到1天缩短到了半个小时(取决于规划者产生结果的速度)值)。

脚本中最麻烦的填数据步骤从3-5小时缩短到2秒左右,并且数据的准确率100%(除非规划者填错数据)。

如果后面数值发生变化,甚至服务器表结构发生变化(比如添加新字段),只需更改EXCEL,再次点击按钮即可,耗时不到半分钟。

vb 函数返回值为 type_函数返回值为数组_函数返回值为指针

EXCEL非常擅长处理这种规则的、矩阵形式的数据,但仅仅依靠系统函数或宏最多只能做排序和过滤。

我花了2个工作日写这个脚本。 应用它后,我每天可以节省数百小时的计划和脚本工作时间。 最重要的是,准确率是100%。

虽然我已经离职很久了,但是这个脚本估计还在用。 它被设计为通用的。 不同的项目只需要修改表字段和表名即可通用。

由于代码应用过于具体,这里象征性截图一下。

关键是代码不能写死。 例如,该项目最初是为游戏A开发的,有50个字段。 如果硬编码50个字段,项目B的字段就会不同,所有代码都得重写。

这里必须使用循环和内容判断。 我不在乎你有多少个字段以及它们的内容是什么。 无论如何,我将遵循规则并用循环过滤所有字段。

函数返回值为指针_函数返回值为数组_vb 函数返回值为 type

在EXCEL中放置按钮也很简单。

在选项中,先释放开发工具栏,然后插入。 下面会有按钮、复选框和其他控件。

点击设计模式像VB6中一样进行设计,然后在按钮的点击事件中编写代码。

5.统计Word中的词频

这里举一个比较常见的例子:统计Word中的词频。

如果你想统计一个单词或单词在一个WORD中出现的次数,那么你网上搜索的任何方法都一定会告诉你查找替换方法。

但如果你想对每个单词做词频统计,这个方法就不行了。

使用代码,我们可以轻松地做到这一点。

函数返回值为指针_函数返回值为数组_vb 函数返回值为 type

由于这是一个演示,所以我直接使用输出结果。

代码的效果是选择一段文字,然后在VBA窗口中执行。 此时,会自动统计所选文本中每个单词的出现频率。

由于这只是一个演示,所以我只是弹出消息框。 如果需要的话可以单独添加,比如抛出EXCEL排序等。

子()

暗淡如

昏暗如

n = ..计数

昏暗的字典

设置字典 = (".")

对于 i = 1 到 n

迪姆的AS

s = ..项目(i)

如果 dict.(s) 那么

dict.Item(s) = dict.Item(s) + 1

别的

dict.Add s, 1

万一

接下来我

暗淡

=dict.keys

暗淡

=dict.items

暗淡为

对于 i = 0 至 ()

sOut = sOut & (i) & "出现次数:" & (i) & "次" &

下一个

输出

结束子

该代码使用字典类,这是一种类似于哈希表的结构。

使用单词本身作为键值KEY,存储并叠加该单词出现的次数,代码框架一旦编码完毕,就一劳永逸了。

6.统计PPT中的停留时间

我以前在鞋厂做开发工作,曾经接到运营这样的需求:

他们自己制作了一个PPT来展示一些产品。 现在,我想收集用户在播放过程中停留在特定页面的时间,以吸引用户对产品的关注。

PPT在播放时可以设置各种延迟效果,但是好像没有统计功能。

由于找不到源文件,我大概会在这里写一个原型。

Lib“winmm.dll”()只要

昏暗的字典

子 e()

'记录当前页码

调暗 iCut 为

iCut = (1).View.Slide。

暗淡如长

= ()

'初始化字典

如果 (dict) 或 (iCut = 1) 那么

设置字典 = (".")

万一

dict.Item(iCut) =

如果 dict.(iCut - 1) And (dict.Item(iCut - 1) > 0) 那么

“停留时间:” & ( - dict.Item(iCut - 1)) & “毫秒”

万一

结束子

VBA自带的时间函数有点棘手,只能精确到秒。 而且是当天的第二天,也就是晚上0点以后会被重置。 到时候你就得判断它是否跨越了天空。

所以这里我们简单地使用系统API,我们得到的是自启动以来经过的毫秒数。

然后将PPT设置为手动播放。 这时程序会自动记录切换幻灯片时的时间,并减去上一张幻灯片的时间,得到用户在上一张幻灯片上停留的时间。

函数返回值为指针_函数返回值为数组_vb 函数返回值为 type

由于这是一个原型,这里我们简单地减去序列号中上一张图片的时间。 大多数人只是一一点击滚轮或者鼠标来玩。 如果播放是跳跃式的,比如直接从第1张图片跳到第3张图片等特殊情况,需要更改代码。

如图所示,当我从第二张幻灯片跳到第三张幻灯片时,第二张幻灯片的停留时间为5124毫秒。

获得数据后如何使用取决于具体需求。

事实上,VBA甚至可以直接连接数据库,但我估计没有人会读或理解它,所以我暂时跳过它。

七、总结与提醒

有些朋友可能听说过宏。 宏和脚本有什么区别?

宏可以用一行或一个脚本来实现。 其实微软提供的“记录宏”功能就是将操作记录成一段代码,然后作为宏来调用。

但相反,代码可以做更多的事情,如果熟练使用,它的功能比宏强大数百倍。

就适用性而言,Excel绝对是最常用的。 甚至可以作为一个简单的程序,放一些文本框下拉框按钮之类的。 之前给别人做过一个简单的问答系统。 太复杂了,没人会看,我就不提了。

其次,由于布局问题,控件在Word中很难放置。 而且由于不涉及太多计算,大部分功能都可以通过软件原生实现。

PPT是最差的。 需要强调的是,虽然PPT运行时可以触发VBA脚本,但无法调试。 PPT前台播放是多线程的,与后台脚本异步。 没有错误消息并且无法到达断点。 而且PPT支持的事件相对较少。

VBA不一定只有微软自己支持,一些知名公司也支持。

当然,VBA编程需要对VB语法有基本的了解,不同的软件有不同的事件和属性。 查资料是免不了的。 它肯定不是像一些基本的操作和功能是每个人都会用的。 但如果能好好利用的话,那么效率真的会暴涨。

标签: 脚本 策划 字段

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码