加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

vba中的查找及循环语句

(2013-12-21 19:18:48)
标签:

find

findnext

with

do

loop

分类: 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)
    Set c = ra1.Find(ra2, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = 5
            Set c = ra1.FindNext(c)
        Loop While Not c Is Nothing
    End If
End With
End Sub


多条件判断语句
Select Case语句的代码如下
Select Case<测试表达式>
 Case(Is)<表达式1>
 <语句块1>
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]
    .RowHeight = 10
    .ColumnWidth = 15
End With
相当于
[A1].RowHeight = 10
[A1].ColumnWidth = 15
省去了输入很多[A1]
也就是说with中以 . 开头的就相当于WITH后的对象 .什么什么什么
下面例子中的.就相当于Worksheets(1).Range("a1:a500")
With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, lookin:=xlValues)
    If Not c Is Nothing Then
     Do
         c.Value = 5
            Set c = .FindNext(c)
        Loop While Not c Is Nothing
    End If
End With

循环语句DO,while后面的条件只要为真就一直循环下去,下例只要i<5,就一直循环.
Sub hys()
       Dim i, j, k
        Do
         i = i + 1
         MsgBox i
        Loop While i < 5
        MsgBox i
End Sub

 

0

阅读 收藏 喜欢 打印举报/Report
后一篇:vba键盘事件
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有