分享

excel编程系列基础:VBA常用的操作对象RANDE

 部落窝教育BLW 2020-04-26

编按:哈喽,大家好!前段时间和大家提到了让excel自杀的VBA代码,引起了不少小伙伴的讨论,都说想看部落窝分享更多关于excel中VBA的知识,别催别催,这不就来了吗。学习更多技巧,请收藏部落窝教育excel图文教程


说在【前言】前面的话 

如果你已经准备开始学习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中是使用空格连接的。学习更多技巧,请收藏部落窝教育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不应该有初级知识这种说法,因为高级语句也是由这些基础知识构建起来的,先学基础,再积累思路,相信同学们一定可以自己写出代码。学习更多技巧,请收藏部落窝教育excel图文教程


****部落窝教育-VBA编程基础教程****

原创:E图表述/部落窝教育(未经同意,请勿转载)

更多教程:部落窝教育

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多