Range的用法:
下面是常见的比较基础的range的用法,想要学习更多用法可自行查资料或者私信我!
1. 选择A1单元格,不做任何操作
SubrangeTest()
Range("a1").Select
EndSub
2. 选择A1单元格,并且赋值“I am a1”
SubrangeTest()
Range("a1") ="i am a1"
EndSub
3. 选择A1到C5单元格,不做任何操作
选择A1到C5有两种写法,逗号分隔是一种,还有冒号分隔也是一种。
SubrangeTest()
Range("a1", "c5").Select
Range("a1:c5").Select
EndSub
4. 选择A1到C5单元格和E5到G6两个不连续的区域,不做任何操作
SubrangeTest()
Range("a1: c5,e5:g6").Select
EndSub
5.选择第一行,不做任何操作
SubrangeTest()
Range("1:1").Select
EndSub
6.选择第A列,不做任何操作
Sub rangeTest()
Range("a:a").Select
End Sub
If的用法:
格式如下:
if 判断条件 then
else
endif
例子:
如果a1单元格为 "GIVE THANKS TO GOD",那么a1单元格为true,否则a1单元格为false.
If Range("a1")= "GIVE THANKS TO GOD" then
Range("a1")= "true"
Else
Range("a1") ="false"
End if
多条件判断
If Range("a1") ="1" then
Range("a1") ="1"
Else if Range("a1")= "2" then
Range("a1")= "2"
Else
Range("a1")= "3"
End if
已经学习了range和if的用法,我们开始做一个练习吧
案例1
题目:
1.实现表格中性别是男的,称呼为先生,性别为女的称呼为女士;
2.实现专业为理科的专业代码为lg,专业为文科的专业代码为wk,专业为财经的专业代码为cj
3.姓名为空的数据删除掉,表格如下图:
分析:
重复操作可用宏来执行
目标:
练习range和if的使用,熟练掌握range和if。
操作:
第一步:点击visual Basic,在表格上面右键-》点击插入-》选择模块
第二步:写代码
Sub pd()
Dimi as interge
For i = 1 to 30
//处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)
If Range(“e” & i)=”男” then
Range(“f”& i)=”先生”
Else
Range(“f”& i)=”女士”
End if
//处理专业的代码
If Range(“b” & i)=”理科” then
Range(“c”& i)=”lg”
Else if Range(“b” & i)=”文科” then
Range(“c”& i)=”wk”
Else
Range(“c” & i)=”cj”
End if
Next
End Sub
结果如下图:
如果姓名为空删除整行,因为我们不会写删除的代码所以可以通过录制宏,选中姓名为空的单元格,右键点击删除,选择删除整行。删除代码如下
Range(“d4”).select //选中D4单元格
Selection.EntireRow.Delete //删除整行
所以我们的代码中要加上姓名为空的数据删除掉的逻辑,代码如下:
Sub pd()
Dimi as interge
For i = 1 to 30
//处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)
If Range(“e” & i)=”男” then
Range(“f”& i)=”先生”
Else
Range(“f”& i)=”女士”
End if
//处理专业的代码
If Range(“b” & i)=”理科” then
Range(“c”& i)=”lg”
Else if Range(“b” & i)=”文科” then
Range(“c”& i)=”wk”
Else
Range(“c”& i)=”cj”
End if
//判断姓名是否为空
If Range(“d” & i)=”” then
Range(“d”& i).select //选中D4单元格
Selection.EntireRow.Delete //删除整行
End if
Next
End Sub
但是仔细思考一下,我们上面的代码其实是有问题的,因为删除一行单元格,下面的单元格会上移,i是一直增加的,会导致一些行被漏掉,比如说第四行被删除了,应该执行第五行,但是原来的第五行因为第四行被删除上移变成了第四行,所以第五行就被漏掉了未执行!
所以当我们遇到删除操作的时候,要从下往上删。vba遇到删除问题的时候都要考虑这个问题,尽量从后往前删。
代码如下:
Sub pd()
Dimi as interge
For i = 30 to 1 step -1 //可通过step规定for的步长,负数时代表递减
//处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)
If Range(“e” & i)=”男” then
Range(“f”& i)=”先生”
Else
Range(“f”& i)=”女士”
End if
//处理专业的代码
If Range(“b” & i)=”理科” then
Range(“c”& i)=”lg”
Else if Range(“b” & i)=”文科” then
Range(“c”& i)=”wk”
Else
Range(“c”& i)=”cj”
End if
//判断姓名是否为空
If Range(“d” & i)=”” then
Range(“d”& i).select //选中D4单元格
Selection.EntireRow.Delete //删除整行
End if
Next
End Sub