第3章 Excel VBA基础语法 【中】

概述:

继续上一篇

4、集合、对象、属性和方法

万物皆对象,属性就是描述对象的形容词,方法就是对象的动作

例如人是一个对象,它属性:身高,体重,肤色, 它动作:走路,吃饭,思考等等。

对象和属性是相对的。它对于上一级它属性,对于下一级的它是属性。例如

工作表是对象,对于工作簿来说 它算是属性  (记住一点就是,总是从大对象一直到小对象,越到后面越具体,它们直接采用“.”进行连接)

例如: Application.Workbooks("Book1").Worksheets("Sheet2").Range("A2")

总结:

  • 1、这句话意思就是先工作簿Book1,然后找到工作表Sheet2,最后找到单元格A2
  • 2、两个对象之间采用“.”进行连接
  • 3、一定由大对象到小对象(越后面越具体)类似地址一样

5、连接的桥梁,VBA中的运算符 (你让它干啥活)

5.1 算术运算符

一说到算术运算,第一想到的四则运算。


注意: Mod用得比较多,“/” 、“\”的区别

5.2 比较运算符



VBA中的通配符(like)



5.3、连接运算符

只有两种 &+

&: 只能字符串拼接

+:会根据两个表达式判断,如果两个表达式是数字,它会执行加法算法,其他情况和&一样功能字符串拼接 

5.4、逻辑运算符



5.5、运算符的优先级

问题来了,这么多运算符,如果混合出现应该执行先执行什么?(其实你编程时候注意一下,你认为优先级高用“()”括起来就行了)


6、内置函数

VBA中已经为我们封装很多函数和属性,比如日期 Date 和 Time() 

Option Explicit

Sub wdate()
  
   MsgBox "现在日期是:" & Date & "  " & Time()
End Sub



当然还有很多函数,你可以在代码编辑页面按F1查看   或者点击菜单


7、控制程序执行,VBA的基本语句结构

大家应该理解三种语句结构:顺序结构,选择结构(或分支结构),循环结构

7.1、顺序结构

根据代码一直从上往下执行。

7.2、选择结构

也就是有几种情况供你选择,当然选择是有条件的

方法一: If .... then   

语法:
if  条件  then

执行语句1  (当条件满足的执行,也就是条件=true)

Else     

执行语句2   (当条件不满足的执行,也就是条件=false)

End if      (结束if语句结构)

简单流程图


例子:

Option Explicit

Sub iftest()
  
   If Range("A1") = "" Then
        
        MsgBox "单元格A1为空"
   
   Else
   
        MsgBox "单元格A1有值"
        
   End If
End Sub



当然你可以调试,可以看出执行每一句话,如果是一句一句执行按F8就行



方法二:Select Case 语句

语法:

Select Case  值(条件可以数值表达式或字符串表达式)

Case   (含有IsTo 表达式)

语句1                          (上面为true执行) 

Case   (含有IsTo 表达式)

语句2                         (上面为true执行) 

  ......

Case Else 

语句 n

End Select 

备注:Is 表示是意思, 例如: 值 Is  < 1 (表示条件是否小于1), To 表示到意思, 例如 Case 1 To 3 , 表示值是否在1到3之间,包括1和3

这个if很相似,记住一点就是Select Case 是If的特例,  Select Case 类似枚举意思

例子

Option Explicit

Sub caseTest()

  Dim score As String    '定义变量保存结果
  
  Select Case Range("A1")   '获取单元格A1的值
  
  Case Is >= 90
  
    score = "优"
    
  Case Is >= 80
    
    score = "良"

  Case Is >= 70
    
    score = "中"
    
  Case Is >= 60
  
    score = "及格"
    
 Case Else
 
    score = "不及格"
    
End Select
 
    Range("B1") = score   '将值写到单元格B1

End Sub



7.3、循环结构

方法一: For ... Next 语句

语法:

For  循环变量    Step  数字             (Step表示步长,每隔多少数字,这个是可选的)

  循环体

Next     (下一个)

改变上面的例子,如果有很多学生如何快速给出评判

Option Explicit

Sub caseTest()

  Dim score As String, i#    '定义变量保存结果,你是否记得#代表整数
  
  For i = 1 To 10 Step 1
  
      Select Case Range("A" & i) '获取单元格Ai的值
      
          Case Is >= 90
          
            score = "优"
            
          Case Is >= 80
            
            score = "良"
        
          Case Is >= 70
            
            score = "中"
            
          Case Is >= 60
          
            score = "及格"
            
         Case Else
         
            score = "不及格"
        
    End Select
     
    Range("B" & i) = score  '将值写到单元格Bi

Next i
End Sub


有些时候想要找到某个值之后,立即结束循环,例如按顺序找第一个得到“优”的同学,并把编号和成绩打印出来

需要用到关键字 Exit For


方法二 Do  While 语句

Do  [While  逻辑表达式]    (为true执行,这是可选的)

<循环体>

[Exit Do]        (退出循环)

[循环体]

Loop

备注:“[]” 表示可选

修改上面的例子

Option Explicit

Sub caseTest()

  Dim score As String, i#    '定义变量保存结果,你是否记得#代表整数
 
 i = 1
 
 Do While Range("A" & i) <> ""  '表示A列直到为空单元格
  
      Select Case Range("A" & i) '获取单元格Ai的值
      
          Case Is >= 90
          
            score = "优"
            
          Case Is >= 80
            
            score = "良"
        
          Case Is >= 70
            
            score = "中"
            
          Case Is >= 60
          
            score = "及格"
            
         Case Else
         
            score = "不及格"
        
    End Select
     
    Range("B" & i) = score  '将值写到单元格Bi
    
    i = i + 1
    
 Loop
 
End Sub




使用Exit Do 退出循环


方法三 Do Until 语句  

直到Until 逻辑表达式为true 结束循环,与Do while 相反

语法:
Do [Until 逻辑表达式]  

<循环体>

[Exit Do]

[循环体]

Loop

备注:“[]” 可选的

或语法2:

Do 

<循环体>

[Exit Do]

[循环体]

Loop [Until 逻辑表达式]

修改上面的例子:


方式四: For Each ... Next 语句

一般用Range单元格进行循环,用得比较多

打印工作簿中所有工作表

Option Explicit

Sub forEachTest()

    Dim sht As Worksheet, i As Integer
    
    i = 1
    
    For Each sht In Worksheets
    
        Range("A" & i) = sht.Name
        
        i = i + 1
        
    Next sht
    
 
End Sub



7.7、 其他的常用语句

GoTo语句, 让程序转到另一条语句去执行

尽量不要用,虽然用起来灵活,但是可读性差,尽量将GoTo转换成其他结构选择结构和循环结构(所以这里不打算涉及)

With语句,让代码更加简单

例如打个比如,在上海人一般会说徐汇区而不会说中国上海徐汇区,应该都知道,不必在重复一遍(dry原则 don't repeat yourself)

Option Explicit

Sub notWithTest()

    Worksheets("Sheet2").Range("A1").Font.Name = "仿宋"  '设置字体
    
    Worksheets("Sheet2").Range("A1").Font.Size = 12   '设置字号
    
    Worksheets("Sheet2").Range("A1").Font.Bold = True '字体加粗
    
    Worksheets("Sheet2").Range("A1").Font.ColorIndex = 3 '设置字体颜色

    
 
End Sub



Sub withTest()
    
    With Worksheets("Sheet2").Range("A1").Font
    
        .Name = "仿宋"
        
        .Size = 12
        
        .Bold = True
        
        .ColorIndex = 3
        
    End With

End Sub





  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值