先还是复习一下上一章的内容吧。来个题目搞搞。
题目:将1到10填充至A1~J1。
sub myresult()
for r=1 to 10 step 1
thisworkbook.worksheets('sheet1').cells(r,1).value=r
next
end sub
以上是昨天讲解的内容,我们今天再增加点内容,丰富一下知识。我们今天给大家整点color to see see.
题目:把当前工作簿的名称为sheet1的工作表的A1:A10单元格区域的背景设置成红色。
拿到这个题,如果毫无头绪,我们不妨先考虑一下录制宏,之前视频给大家讲过的。录制宏之后查看其代码是一个非常好的学习VB的方式。该题步骤如下:
开始录制
选择A1:A10
右键选择设置单元格格式
填充红色
停止录制
完成之后,我们进入VBA界面来看看我们刚才录制的这段代码。
Sub Macro1()
'
' Macro1 Macro
'
'
Range('A1:A10').Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
相信大家对怎么操作这个步骤已经熟悉了,那么我们来分析一下这个代码:
当我们选中A1:A10的时候,生成代码:
range('A1:A10').select
我们可能会发现,在代码Range('A1:A10').Select的Range单词之间没有指定对哪个特定的工作簿和工作表进行操作,在这种情况下,代码默认的操作对象是当先激活的工作簿和工作表。在我们录制这段宏时
,激活的工作簿(或者表述为“处于活动状态的工作簿”)就是代码所在的工作簿,激活的工作表就是“Sheet1”。但是我们录制宏时的情况并不能代表永远如此,也就是我们重复执行宏时却不一定能保证“Sheet1”一直保持激活状态(或者说选中状态)。如果在重复执行该段代码时“Sheet2”处于选中状态,那么你会发现“Sheet2”工作表的A1:A2单元格区域的背景被设置成了红色。
因此,我们需要保险一点,无论何种情况都要把“Sheet1”工作表的A1:A2单元格区域的背景设置成红色,而不是其他工作表。为此,我们可以把代码Range('A1:A10').Select改成:
thisworkbook.worksheets('sheet1').range('A1:A10').select
接下来看with那段代码,说实话,这里有一些英文我都不知道表示的啥意思,拆开看字母我都TM认识。我们也就右键选个格式,填充个红色,冒出了这么多这都什么的代码啊?!
其实,宏就是这么任性,它不光记录你的动作,它还把一些对话框中的默认设置给一并记录下来了,当然,既然说是默认,那也就是说那些都是废话,要也不影响,不要也没有关系。为了让自己和大家更了
解,我们简化我们的代码。
with selection.interior
.color=255
end with
多简单啊。。。生活又美好了!!!
这里又多了个语句,with...end with
这里的“With …End With”是VBA 为减少代码字符数量而专门设计的一种结构,With表示的意思是“对于…进行操作”的意思。End With用来标记“With”作用域” 的结束。
我们下次专门讲这个吧,这次我们先不用这个with...end with,改成大家熟悉的。
sub macro1()
thisworkbook.worksheets('sheet1').range('A1:A10').interior.color=255
end sub
一句话搞定啊!!!疯了我。。。
这里255是表示颜色的一个数字,当我们需要设置为不同颜色时,可以通过录制宏来得到不同颜色的对应数字。其实这里也可以写成vbred,这个我以后会提到,也只有几个基本色可以这样写。我下图的案例写的就不是数字,就是vbred, vbyellow, vbgreen。
上面代码的中文解释是:
A1:A10的内部颜色为红色(255)。
看看图吧:
好了,今天内容先到这里,明天接着再往这个代码里面添加点料,再给大家丰富一下。
联系客服