vba中的查找及循环语句
(2013-12-21 19:18:48)
标签:
findfindnextwithdoloop |
分类: IT |
本文介绍以下四种语句:
①match及find,findnext
②select case
③with
④do loop while
定义一个区域并赋值,一定要注意区域赋值必须用set.
用match在区域查找b,如果没有找到:就会出现错误提示。
Sub hys()
Dim ar As Range, dr, b
Set ar = Sheet1.Rows(6)
b = Cells(12, 1)
dr = IsError(Application.WorksheetFunction.Match(b, ar))
MsgBox dr
End Sub
上列中,如果没有找到返回一个错误值,但用iserror无法难测,程序就会出错.所以一般不用这种方法来查找.
find语句使用
Private Sub hys()
bj2 = "八(2)"
Set raa = Sheet1.Range(Cells(42, 1), Cells(42, 18))
Set ra = raa.Find(bj2, LookIn:=xlValues)
MsgBox ra
End Sub
返回的应该是一个range,但很多情况下,系统显示的是返回单元格的值,即查找的值.找不到返回nothing.上述例子中,如果返回nothing,最后一步msgbox就会出错.
能够查找下一个的findnext
先用find查找第一个,然后判断进入findnext进行下一个查找,设置条件可以把范围的值查找完.
Sub
hys()
Dim c As Range, ra1 As Range, ra2 As Range
With Worksheets(1)
Set ra1 = .Range("a1:a11")
Set ra2 = .Cells(1, 2)
End With
End Sub
多条件判断语句
Select Case语句的代码如下
Select Case<测试表达式>
Case(IS)<表达式2>
<语句块2>
……
Case(Is)<表达式n>
<语句块n>
[Case Else]
<语句块n+1>
End Select
需要注意的是,VBA中Select
Case语句的执行过程是根据“测试表达式”的值,找到第一个与该值相匹配的表达式,再执行其后面的语句块。如果找不到与之匹配的表达式且有Case
Else语句,则执行Case Else后面的语句块,否则跳转到End Select后面的语句。
例如我要判断单元格C3中的数值,如果小于零则在E3单元格中输入“小于零”;如果等于零则在E3单元格中输入“等于零”;如果大于零则在E3单元格中输入“大于零”。使用Select Case语句输入如下代码,再运行该代码,即可在E3单元格中显示相应信息。
with语句
通俗点讲with的作用就是简化代码,让代码简洁易懂
让你不需要输入重复的内容
例如:
With [A1]
End With
相当于
[A1].RowHeight = 10
[A1].ColumnWidth = 15
省去了输入很多[A1]
也就是说with中以 . 开头的就相当于WITH后的对象 .什么什么什么
下面例子中的.就相当于Worksheets(1).Range("a1:a500")
With Worksheets(1).Range("a1:a500")
End With
循环语句DO,while后面的条件只要为真就一直循环下去,下例只要i<5,就一直循环.
Sub hys()
End Sub