分享

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

 我的人生宝库 2020-05-24

1. VBA在EXCEL中能解决什么问题

EXCEL很好用,尤其是在数据统计和处理的时候,但是EXCEL本身提供的函数有它自己的局限性,很多特定的功能无法实现,用起来不够灵活,那么EXCEL中嵌入的VBA编程语言就可以解决这个问题,它可以:

l 处理若干单元格中重复的具有同一特征的数据。举个例子,一个单元格里面有字符和数字,现在想只保留单元格中数字,去除其他字符。这个可以用VBA语言中的循环语句+数字识别命令识别单元格中数字,并对其他字符删除。

l 对具有某一特征的多个单元格的数据进行处理。例如,将满足某一特征A的单元格中数据和满足另一特征B的单元格的数据合并或其他操作,存放在另一个位置的单元格组中。

l 其他的只有你想不到没有办不到的应用。

2.VBA怎么使用

VBA一般的开发流程是这样的:

l 准备工作:对待处理的数据进行特征分析,确定处理的目标、怎么干等;

l 打开VBA开发环境;

l 选择操作的对象,如工作表;

l 选择操作对象的动作和响应事件,如双击、选中、右击等;

l 编写事件代码,如对单元格双击后执行什么操作;

如有必要,可以添加人机交互窗体;

l 运行VBA程序;

l 保存和关闭。

2.1使用的前提

l 使用者应当具有一定的编程基础,有VB开发经验最好。

2.2入门介绍和不完全使用步骤(1)EXCEL VBA开发环境介绍

l 打开VBA开发环境

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

图 1

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

图 2 VBA的编程环境

l 编写代码、添加人机交互界面等

如图 2中的编程区,在里面就可以编写用户代码。

Ø 编写代码一般先需要选择操作对象。“通用”一般用于全局变量的定义,“worksheet”一般用于工作表的操作;

Ø 还需要选择动作和响应事件。用于处理对对象进行某种操作之后的响应事件,如双击单元格后执行什么动作,右击单元格之后执行什么操作等。根据提示的助记符单词应该大致知道是什么动作事件。

事件选择完成后,会弹出一段子过程定义段,在定义段内编写代码即可。

如有需要,也可以添加人际交互的窗体,用于运行过程控制、输入参数、显示参数等功能。

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

图 3 添加人机交互窗体

添加了窗体和控件之后,就可以像VB那样子编写程序,如:

Ø 按键控件的操作。点击按钮控件,编写按键动作事件发生后执行的操作的程序等。

Ø 文本框的操作。文本框有输入和输出的功能,根据需要编写相应的程序。

Ø 其他控件的使用方法不再详述。

l 运行和保存

工具栏上有个倒三角按钮,点击它就可运行程序,也可以点击菜单栏[运行],里面有运行按键,功能一样。

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

图 4

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

图 5

保存和其他文件的操作方式一样,可以点击菜单栏文件/保存。

如果要保留EXCEL文件中的VBA代码,一般需要启用宏,并保存为.XLSM(启用了宏的工作表)格式的文件。

启用宏的方法:

Ø 点击EXCEL文件的左上角[开始]菜单;

Ø 点击[EXCEL选项]/[信任中心]/[信任中心设置]/[宏设置],再进行如下的启用宏的设置;

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

图 6 启用宏的设置

设置完成后点击“确定”按钮,保存关闭后再打开就可以了,宏已经被启用了。

注意:如果保存文件的时候已经运行了VBA代码,那么下次打开EXCEL文件时它会自动进入执行状态,假如没有的话再次打开VBA开发界面,点击上方的倒三角运行按钮就可以运行程序了。

(2)EXCEL VBA一段代码的分析

举个例子讲一下参考代码,下面一段代码实现了如下功能:

l 将工作表sheet1中的1-5行、第1列的单元格中的数据进行处理,提取单元格中末尾的数字。

l 并将提取的数字结果存入对应的第2列中。

下面是详细代码,将这段代码复制到编程区中,按工具栏里的倒三角运行即可实现以上功能:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) '提取数字。编好程序后在工作表里随便双击一个单元格就能执行。

For j% = 1 To 5 '在单元格1-5行提取数字

s$ = Sheet1.Cells(j, 1) '工作表1中将第j行第1列单元格内容存入字符串变量s。$是字符串定义符

s=Trim (s) '去除单元格中的头尾空格

s2$ = ''

For i% = Len(s) To 1 Step -1 '%是整形定义符

If InStr('0123456789.', Mid(s, i, 1)) Then '从单元格字符串的最末一个字符朝前开始判断是否为数字

s2 = Mid(s, i, 1) & s2$ '是数字,倒着存入变量s2

Else

Exit For '不是数字,退出for循环

End If

Next i

Sheet1.Cells(j, 2) = s2 '某一个单元格字符串处理完后,结果存入B列

Next j

End Sub

全文完。本文只是VBA入门而已,详细的操作技巧请查阅相关书籍。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多