首先,vba是非常简单的,只要你用过excel,可以说vba就在你身边。 常用的vba的对象就这么几个。1 单元格区域,2 工作表,3 工作簿。 今天随便讲讲单元格区域吧。 单元格区域对象,叫range。你如果要操作单元格区域就要操作range对象啊 对单元格区域的操作大体上就这么几个常用的,选择,填充内容,排序,筛选等等。 我们从最简单的选择开始吧,主要是了解怎么表示区域,选择这个方法是select 每个工作表在被激活的时候都会有一个当前单元格,如果你选择一个单元格,就是用黑框框起来的那个单元格, 如果你选择很多个单元格,就是反白的那个单元格, 比如你要选择a1作为这个当前单元格,很简单就用这个语句。 你们大概都知道怎么用代码编辑器吧? Sub test1() Range("a1").Select End Sub 你们可以新开一个工作簿,跟着做,运行代码 alt+f11,然后插入一个模块,把代码复制进去运行一下 这儿a1就代表你要选择的单元格的地址。这个跟一般的认知是一致的。 vba是大小写无关的,所以A1 和a1是一样的 比如要选择c1该怎么修改? Range("c1").Select Sub test1() Range("c1").Select End Sub 把a1改成c1就可以了。 接下来是选择区域。比如你要选择a1到a10 Sub test2() Range("a1:a10").Select End Sub 区域的写法跟大家一般的认知还是一样的。用冒号连接就代表区域。 如果要选择一行怎么搞? 行我们知道是rows 对象 Sub test3() Rows(1).Select End Sub 这样就是选择了第一行, 这儿简单讲一下对象的引用。一般的对象都是可以用这种方式来引用,就是某个对象的第一个,第二个这种。比如第一行rows(1),第三行就是rows(3),第一列columns(1) . 第五列就是columns(5) 还有一种引用方式就是用名称来引用,比如工作表'sheet1',就可以用类似sheets("sheet1") 这种形式来引用。 所以我们比如要选择第4列可以这样写 Sub test4() Columns(4).Select 'columns("d").select End Sub 第一条是用数字的方式来引用,第二条实用名称的方式来引用。第四列的名字是d列,所以这儿用d 接着我们看怎么给某个单元格填写数字。比如要给a1填写100,b1填写50 Sub test5() Range("a1") = 100 Range("b1") = 50 End Sub 这样就给这两个单元格填写了数字了。 vba在excel中最重要的就是所见所得,程序里填写一个数字,在表格里就可以直接看到结果了。 嗯,因为这两句的效果完全一样,所以注释掉一句,你可以分别运行看看效果。 好了,现在我们在c1里填写一个公式求和 如果要填这个公式在工作表里,我相信大家都会=sum(a1:b1) 我们填写在代码里基本上也一样。 Sub test6() Range("c1").Formula = "=sum(a1:b1)" End Sub 这儿要填写的是公式,所以用到了formula,我们可以不用管他到底是属性还是方法,因为某些情况下很难区分到底是属性还是方法。只要能实现功能就好了。 大家看到了这个公式只是在外面加了个引号,其他的一点区别都没有。这样我们就可以在c1单元格里看到公式和结果了。 如果我只想要结果该怎么办哪。大家都知道工作簿随着公式越来越多,速度就越来越慢,所以我们既然用了vba了。我不要公式了,直接填充结果怎么弄? 这样可以直接引用单元格区域求值,也可以用evaluate Sub test7() 'Range("c1") = Range("a1") + Range("b1") Range("c1") = Evaluate("sum(a1:b1)") End Sub 一般比较复杂的公式可以直接用evaluate求值,简单的可以用计算求值。 Sub test7() 'Range("c1") = Range("a1") + Range("b1") Range("c1") = Evaluate("sum(a1:b1)") End Sub 如果要选择两个不连续的区域,我们用逗号连接。 Sub test8() Range("b2,d3").Select End Sub range对于区域的选择比较方便,但是在对区域循环的时候cells就比较方便。因为cells使用这种格式来表达。cells(row,column) 这种格式下,不论是对行,或者列循环都很方便, 比如要给第一列填充数据。可以采用下列方式 Sub test9() Dim i As Long For i = 1 To 10 Cells(i, 1) = i Next i End Sub 关于表达方式要熟练,肯定是要多运用的,开始的时候根本搞不清楚哪个代表行,那个代表列,多联系就知道了。 range还有一种简化的表达方式,这种方式源于evaluate [a1] [a1:b1] 这种格式只能写死,没法做成循环。一般来说可以不要用。初学者就要老老实实的把所有的东西都写全。这样才不容易犯错。 在a1:a10填充序号,还可以用一种简单的方式。 Sub test10() [a1:a10] = [row(1:10)] End Sub 这种方式等价于下面这个 Sub test11() '[a1:a10] = [row(1:10)] Range("a1:a10") = Evaluate("row(a1:a10)") End Sub |