Excel VBA 入门
一、文件格式
要使用VBA,excel文件必须保存为启用宏的工作簿,即xlsm格式。
二、启动VBA编辑器
打开工作簿后,要启动VBA编辑器,有两种方法,一是在工作表的名字上面点击右键,选择“查看代码”,另一种就是快捷键Alt+F11

三、工程资源管理器简介
VBA编辑器右边的树形目录就是工程资源管理器,如下图,列示了一个工程(VBAProject)及其下面的各个对象。一个工作簿就是一个工程,下面的sheet1就代表一张工作表,双击它可以查看和编辑这张工作表的代码,在里面实现各种功能,ThisWorkbook代表整个工作簿。

四、立即窗口、MsgBox与Hello World程序
与所有其它编程语言入门一样,第一个程序都是输出一句话:Hello World。
首先选择菜单栏——视图——立即窗口打开立即窗口(快捷键Ctrl+G),立即窗口的意思就是这里面的代码在输入回车之后会被立即执行,有点像调试javascript的Console。

在窗口中输入
MsgBox "Hello World"
然后回车,就会看到hello world对话框。

五、工作表——Worksheets(1)、Sheets(1)和Sheet1
下面三行代码都会输出工作表1的名称:
MsgBox Worksheets().name
MsgBox Sheets().name
MsgBox Sheet1.name
Worksheets表示当前活动工作簿中所有工作表的集合,Worksheets(1)表示集合中的第1张工作表,也就是Sheet1
Sheets表示当前活动工作簿中所有图表(Charts)和工作表(Worksheets)的集合,也就是说Sheets包含上面的Worksheets
Sheet1直接表示当前活动工作簿中的第一张表
六、区域——Range
比如,Range("A1")表示A1单元格,Range("A1:B2")表示由A1、A2、B1、B2四个单元格组成的区域,以此类推;如果要表示不连续的区域,将多个不连续区域用逗号隔开即可,比如Range("A1:B2,C3:D4")
以下代码输入区域的地址:
MsgBox Sheet1.Range("A1:B2").Address
运行结果如图:

七、单元格——Cells
Cells(1,2)——表示第1行第2列的单元格,即B1单元格。
Cells(1,2) = “我是一个单元格”——表示在第1行第2列填上文本“我是一个单元格”
八、流程控制语句
If condition Then
...
End if
---------------------------------------
If condition Then
...
Else
...
End if
----------------------------------------
If condition Then
...
ElseIf condition Then
...
Else
...
End If
-----------------------------------------
For i=0 to 100
...
Next
-----------------------------------------
While condition
...
Wend
-----------------------------------------
Do
...
Loop While condition
-----------------------------------------
九、复制
单元格复制:
Cells(,).Copy Cells(,)
以上代码将第1行第2列的数据复制到第1行第3列
---------------------------------------------------------
区域复制:
Range("A1:B2").Copy Range("C3")
以上代码将A1:B2区域的内容复制到C3区域
----------------------------------------------------------
行或列复制:
Rows().Copy Rows()
Columns().Copy Columns()
将第1行的数据复制到底2行
将第3行的数据复制到第4行
----------------------------------------------------------
十、清除——Clear和ClearContent
Range(A1:B2).ClearContent '清除区域内容
Range(A1:B2).Clear '清除区域,包括内容和格式等
十一、行和列自适应高(宽)度
Rows.AutoFit
Columns.AutoFit
十二、跳转到某工作表
跳转到某工作表即激活某个工作表,使它变成活动状态:
Sheet2.Activate
十三、事件
比如要实现双击Sheet1单元格A1时弹窗提示good,那么在工程资源管理器中双击Sheet1,打开Sheet1的代码窗口,窗口顶部第一个下拉菜单选择worksheet,第二个下拉菜单选择BeforeDoubleClick,这时代码窗口就会出现这样一段代码:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub
这段代码表示Sheet1工作表任意地方被双击时会执行的操作,但我们要的是A1单元格被双击时弹窗,那么还要对被双击的地方进行判断,被双击的目标即参数中的Target,我们根据地址判断Target是不是A1,是就弹窗提示,不是就不执行任何操作:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
MsgBox "good"
End If
End Sub
Excel VBA 入门的更多相关文章
- Excel VBA入门(九)操作工作薄
虽然我前面讲过,在VBA中操作工作薄并不是件明智的事,但有些时候,还是避免不了要这么做.绝大多数情况下,我们要做的是获取到某个工作薄对象,并以此来获得其中的工作表对象,然后再对工作表中的数据进行处理. ...
- Excel VBA入门(八)单元格边框
本文基于以下文件 http://pan.baidu.com/s/1nvJtsu9 (部分)内容预览: 1. 边框样式 Sub cell_format() Dim sht As Worksheet Di ...
- Excel VBA入门(七)注释、宏按钮及错误处理
系统性的知识前面已经讲完,从本章开始,本系列教程涉及的将会是一些相对凌散的内容. 1. 注释 代码注释是一件利人利己的事,为了方便自己在代码需要更新修改时,依然能够快速地看懂自己完的每一行代码到底是什 ...
- Excel VBA入门(六)过程和函数
前面讲过,VBA代码有两种组织形式,一种就是过程(前面的示例中都在使用),另一种就是函数.其实过程和函数有很多相同之处,除了使用的关键字不同之外,还有不同的是: 函数有返回值,过程没有 函数可以在Ex ...
- Excel VBA入门(五)Excel对象操作
本章是本系列教程的重点.但我觉得应该不是难点.从第零章开始到学完本章,应该可以把VBA用于实战中了. Excel对象主要有4个: 工作薄 Workbook 工作表 Worksheet 单元格区域 Ra ...
- Excel VBA入门(四)流程控制2-循环控制
所谓循环控制,即在循环执行一段代码,用于完成一些重复性任务. VBA中的循环控制语句主要有3种:for.while.loop.对于大多数人来说,for的使用频率最高,而我个人也觉得for是最为灵活的, ...
- Excel VBA入门(三) 流程控制1-条件选择
VBA中的流程控制分为两种,其一是条件结构式的,即根据条件判断的结果去选择性执行相应的语句(块):另一种是循环,即循环地执行语句(块).本节介绍第一种. 1. IF if 语句其实包含有几种形式: ① ...
- Excel VBA入门(一)数据类型
与其它的编程语言一样,VBA也有它自己的数据类型.讲到数据类型,就离不开"变量"与"常量"这两个概念,变量与常量,都是用于保存数据的.顾名思义,"变量 ...
- Excel VBA入门(二)数组和字典
数组和字典也是VBA的常用到数据类型之一.但是我翻了有四五本VBA教程相关的书,里面都没有介绍到字典,数组到是在介绍数据类型时有介绍,而并没有提到字典. 事实上,字典不是VBA内置的类型,它是Wind ...
- Excel VBA 入门(零)
本教程所用系统环境: Windows 10 Excel 2013 1. 添加开发工具 打开Excel,依然找到"文件"->"选项"->"自 ...
随机推荐
- [Vijos] 弱弱的战壕
描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒 ...
- msp430项目编程
msp430中项目---LED数码管显示 1.数码管介绍 2.代码(直接使用引脚驱动) 3.代码(使用译码器驱动) 4.项目总结 msp430项目编程 msp430入门学习
- Python开发的一个IDE推荐,Sublime Text 3
Sublime Text 3 官网下载地址为, LINK. 目前最新版本是3114. 这里转载泱泱长空的授权文件(注册码)文章[1],将几个可以用的注册码列举如下: 补充:2016.05 最近经过测试 ...
- struts2 动态工作流
话不多说,直接贴代码: public class TestAction { private String nextPage;//保存下一步内容的属性 public String destroy(){ ...
- Android 自己定义UI文章汇总
<Android ListView分类/分组效果 - 第一种实现方式> <Android ListView分类/分组效果 - 另外一种实现方式> <Android Lis ...
- poj 2965 The Pilots Brothers' refrigerator(dfs 枚举 +打印路径)
链接:poj 2965 题意:给定一个4*4矩阵状态,代表门的16个把手.'+'代表关,'-'代表开.当16个把手都为开(即'-')时.门才干打开,问至少要几步门才干打开 改变状态规则:选定16个把手 ...
- 《从0到1》读书笔记第一章"未来的挑战"第1记:把握潮流风向
这几天刚到手当前炙手可热的来自PayPal创始人Peter Thiel的<Zero to One>.中文名<从0到1>,由高玉芳翻译.中信出版社出版.由于到货时刚好有事情在忙, ...
- Office WORD如何取消开始工作右侧栏
工具-选项-视图,取消勾选"启动任务窗格"
- react 组件之间传值
谈及React时,就会想到一个很重要的思想,就是组件化思想.它将可以重用的部分进行组件化开发,形成一个个相对独立的组件,那么组件化后,你也会提出些疑问,组件与组件之间,将怎样进行信息的传递呢?下面来介 ...
- 【Mongodb教程 第十二课 】PHP mongodb 的使用
mongodb 不用过多的介绍了,NOSQL的一种,是一个面向文档的数据库,以其方便灵活的数据结构,对于开发者来说是比较友好的,同时查询的速度也是比较快的,现在好多网站 开始使用mongodb ,具体 ...