二维码 购物车
部落窝在线教育欢迎您!

VBA实战入门教程(一):Range对象的选择和赋值

 

作者:E图表述来源:部落窝教育发布时间:2020-04-23 17:35:06点击:8037

分享到:
0
收藏    收藏人气:0人
版权说明: 原创作品,禁止转载。

编按:

哈喽,大家好!从今天起,VBA实战入门教程就要陆续与大家见面了。前段时间关于让excel自杀的VBA代码话题,引起了不少小伙伴的讨论,很多人希望部落窝能分享关于VBA的知识。经过精心准备,我们的第一更VBA最常用的RANGE对象的选择和赋值来啦!由于这套VBA系列基础教程会不定时发布,请大家注意收藏。

 

说在【前言】前面的话

 

如果你已经准备开始学习EXCEL VBA,或者看了此文后对学习EXCEL VBA有了丝丝兴趣,还想继续跟随作者由浅入深的学习VBA,那就在评论区留言“继续VBA,点一下在看、“关注”不迷路,你的Call”就是作者写作的动力。

 

【前言】

 

一座冰山浮出海面,我们看得到浮在海面以上的部分,还有一部分却是浸在海面以下的,如果不考虑海水的密度和水的密度的差异,那么“海面以上体积:海面以下的体积≈1:9”。在EXCEL中也有类似的一个比例,那就是“日常使用的知识:excel不会应用的知识”,但是这个比例大概有多少就不好说了,因为每个人掌握EXCEL的程度是不一样的,不敢说“九牛一毛”,但是大部分的同学还只是用到“皮毛而已”。当你有一天真正的运用到了VBA,才会对EXCEL的运行原理有更加透彻的理解和使用。

 

【正文】

 

VBAEXCEL中本质上是对于操作对象的操作,是对被操作对象的各种属性和方法的运用,将日常我们需要手工操作或者函数引用的内容,编辑成VBA可以识别的语言,在触发条件下实现自动化运行的过程。下面我们就来介绍几种“RANGE(单元格区域)”时常会用到的操作。

 

 

一、SELECT属性

 

 

英语中SELECT被译作“选择、选定”的意思,也就是我们常说的“选中单元格区域”,下面举几个例子。

 

1.选择连续区域。例如,我们有一段代码如下:

 

Sub 选中单元格()

   Sheets("select").Range("A1:D6").Select

End Sub

 

代码含义:选中《select》工作表的A1:D6单元格区域。

 

 

2.选择一个单元格。如果我们只需要执行选择一个单元格的操作,那可以按下面的写法处理,如下:

 

Sub 选中一个单元格1()

  Range("B1").Select

End Sub

 

Sub 选中一个单元格2()

  [C2].Select

End Sub

 

Sub 选中一个单元格3()

  Cells(3,4).Select

End Sub

 

这里我们给出了三段代码,运行效果如下:

 

 

为什么用了三种方式来写,这里就需要讲到单元格在VBA中的表示方法了。

 

<小知识>

 

VBA中对于单元格的表达方式主要有三种:RANGECELLS、中括号。

 

1RANGE:书写方式是在RANGE表达式后的括号中,写出需要被引用的单元格区域,如上面的A1:D6,或者直接写某一个单元格地址A1。注意单元格地址需要用英文状态的双引号括起来才能生效。

2)中括号:这是一种单元格表达式的简便写法,如:[A1:D6][A1],不需要加双引号。

3CELLS:它是一种以行列号锁定单元格的方式,语法为CELLS(行号,列号)。它只能选定一个单元格,如上面的CELLS3,4)等同于RANGE"D3")或者[D3]。如果需要使用CELLS表示一个区域,可以结合RANGE,如RANGECELLS1,1),CELLS3,4)),就代表引用A1:D3区域。

 

相对于上面两个小节的内容,细心的同学一定可以看到,在我们的代码中有的指定了工作表,如第1小节的代码Sheets("select").Range("A1:D6");有的没有指定工作表,如第2小节的那三段代码,此时我们就要引用一个新的概念:ACTIVESHEET

 

其实我们在写这两个小节的内容时,建立了两个工作表,如下图:

 

 

在写第1小节的内容时,我们是选中了“select”工作表之后操作的,此时的“select”工作表就是ACTIVESHEET工作表,也就是我们常说的“被选中的工作表”或者“前台显示的工作表”。

  

而当我们的ACTIVESHEET 工作表是“select单元格”工作表时,同学们还“敢不敢”再运行一下“工程:选中单元格”呢?

 

Sub 选中单元格()

   Sheets("select").Range("A1:D6").Select

End Sub

 

作者E图表述知道你们都“胆大妄为”,但结果就是代码报错,因为SELECT属性一定要在ACTIVESHEET表中才有效,如果ACTIVESHEET和代码中SHEETS工作表名称不一致,则不能运行。如果代码中没有指定SHEET,那么代码默认只在ACTIVESHEET中运行。

 

3.选择不连续区域。举个例子,代码如下:

 

Sub 选中不连续区域()

  Range("A1:D6, E10, E1:F3").Select

End Sub

 

VBA中对于选中不连续区域的表达方式,就是用一个逗号间隔开地址,然后再用英文状态下的双引号将它们括起来,这样就可以完成引用。

 

 

4.选择区域的交集部分。举个例子,代码如下:

 

Sub 选中交集区域()

  Range("A1:D6 D1:F3").Select

End Sub

 

在例3中,逗号是联合引用符,那么区域的交集部分,在EXCEL中是使用空格连接的。

 

 

这和我们使用工作表函数的道理是一样的。怎么?你还不知道工作表函数的交集引用吗?写法都是一样的,如下图所示:

 

 

 

二、单元格赋值

 

 

“赋值,顾名思义,其实就是给某一个对象的属性赋予一个值,按照赋值的规则,赋予的内容可以是数值文本等等。当然在VBA中值的格式有很多,我们可以先易后难,先了解日常使用的,再去考虑深入研究,这是一个很重要的学习方法,先了解用法,再了解还可以怎么高级的运用!

 

1.单元格赋值。给一个或者多个单元格赋值的过程,其实很简单。想想我们在使用工作表函数的时候,是不是需要先输入一个“=”,函数才能生效。这个“=”就是给单元格赋值的命令符,代码如下:

 

Sub 赋值1()

  Sheets("单元格赋值").Range("A3") = 6

  Sheets("单元格赋值").Cells(4, 1) = "乘数"

  Sheets("单元格赋值").[A5] = "被乘数"

End Sub

 

 

在代码中,我们依然使用了三种单元格的表示方式,分别给A3A4A5单元格进行了赋值,这其中有数值,也有文本,当然文本需要使用英文状态的双引号括起来,这个规则和工作表中函数的写法是一样的。

 

2.跨表引用,计算式结果赋值。我们在工作表“select”中设置了两个数值,现在将两个值的乘积赋值给B3单元格,代码如下:

 

Sub 赋值2()

  Sheets("单元格赋值").Cells(3, 2) = Sheets("select").Range("B2") * Sheets("select").Range("B3")

End Sub

 

 

select”工作表的B2单元格是4B36,相乘等于24,用“=”号赋值给了单元格赋值工作表中的Cells3,2)单元格(即B3单元格)。就是如此简单,只要了解了代码的表达式写法,就可以写出VBA代码啦~

 

3.工作表函数也能在VBA中使用。如果你要汇总一列数据,是不是马上就会想到SUM函数,其实在VBA中一样可以使用SUM函数。举个例子,代码如下:

 

Sub 赋值3()

  Sheets("单元格赋值").[C1:C10] = 1

  Sheets("单元格赋值").[C11] = Application.WorksheetFunction.Sum(Sheets("单元格赋值").[C1:C10])

End Sub

 

 

给一个区域赋同一个值,再使用SUM工作表函数对这个单元格区域汇总求和,Application.WorksheetFunction就是调用工作表函数的语句。

 

【编后语】

 

看完文章有没有GET到一些VBA的入门知识呢?作者E图表述认为,VBA不应该有初级知识这种说法,因为高级语句也是由这些基础知识构建起来的,先学基础,再积累思路,相信同学们一定可以自己写出代码。

 

本文配套的练习课件请加入QQ群:981335662下载。

Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!

扫下方二维码关注公众号,可随时随地学习Excel

IMG_256

相关推荐:

VBA制作疫情地图《用excel制作全国动态疫情地图(VBA篇)》

VBA使excel自杀灵异事件!一打开工作簿,文件就“自杀”了???

VBA制作九九乘法表《5种最简单的用excel制作九九乘法表的方法

VBA设计面试提醒表《HR的福音!一张能自动提醒面试的excel表格,面试信息再多也不怕看漏!》