1. 程式人生 > 實用技巧 >VBA學習之基礎語法(三)

VBA學習之基礎語法(三)

運算子

  • 算術運算子

    進行算術運算

    Mod 求模運算
    / 求商
    \ 整除
    
  • 比較運算子

    用於比較運算,返回值為Boolean型,為TrueFalse

    <>	不等於		表示式1 <> 表示式2
    Is	引用物件比較	物件1 ls 物件2
    Like 字串比較 
    
  • 連線運算子

    用來連線文字字串,有+&

    • +運算子,兩邊同時都是字串時進行字串的連線,其他則進行數值運算
    • &運算子,無論運算子左右兩邊是何種尖型的資料,都執行連線運算
  • 邏輯運算子

    返回結果為Boolean

    運算子 含義 語法 返回值
    And 邏輯與 表示式1 And 表示式2 都為True時,則返回True
    Or 邏輯或 表示式1 Or 表示式2 只要有一個為True時,返回Ture
    Not 邏輯非 Not 表示式 相反值
    Xor 異或 表示式1 Xor 表示式2 表示式返回的值相同時返回False,否則為True
    Eqv 等價 表示式1 Eqv 表示式2 表示式返回的值相同時返回True,否則為False
    Imp 蘊含 表示式1 Imp 表示式2 待學習

    優先順序

    先處理算術運算子,接著處理連線運算子,然後處理比較運算子,最後再處理邏輯運算子。可以用括號來改變運算順序

語句結構

  • IF...Then

    Sub IfTest_2()
    	If Range("A1").Value=""
            Then MsgBox"沒有輸入內容"
        Else MsgBox"已經輸入內容"
    End Sub
    
  • Select Case

    在設定條件時,應儘量把最有可能發生的情況寫在前面

    Select Case Time
    Case Is < 0.5 '拿time去和0.5比較
        MsgBox "早上好!"
    Case Is > 0.5
        MsgBox "晚上好!"
    Case Else
        MsgBox "下午好!"
    End Select
    
  • For Next

    適用於可確定迴圈變數終值,迴圈變數可以不用宣告

    Dim count As Integer
    For i = 1 To 100 Step 2
    	count = count + i
    Next
    
  • Do While

    更適用於不確定迴圈變數終值,表示式為False時跳出迴圈

    Loop為迴圈結束標誌

    Do [While 邏輯表示式]
    	(迴圈體)
    	[Exit Do]
    	(迴圈體)
    Loop
    //有開頭判斷和結尾判斷,While可在Do後或Loop後,區別在於後者執行迴圈體後進行判斷
    //Exit Do 為滿足一定條件後跳出迴圈,多用於跳出死迴圈
    
    Sub xj()
        Dim xj As String,i As Integer
        i = 1
        Do While Cells(i,"H").Value <> ""
            ...
       	i = i+1
        Loop
    End Sub
    
  • Do Until

    Do [Until 邏輯表示式]
    	...
    Loop
    //與DO While不同的是當表示式為True時跳出迴圈
    
  • For Each...in...Next

    for...in有些相似,以一個可迭代序列(集合、陣列)進行迴圈

        For Each 控制元件變數 In 集合或陣列等
        (語句塊)
        Next
        //控制元件變數需要事先宣告
        //若迴圈物件為陣列時,控制元件變數則要求為Variant型
        //若迴圈物件為集合時,則控制元件變數為相應的物件型別
    
    '用For Each...Next語句編寫一個程式將1到100的自然數輸入A1∶A100單元格區域
    Public Sub forEachNext()
        Dim arr(100) As Integer, i As Integer, ch As Variant
        i = 1
        For Each ch In arr
            Cells(i, "j").Value = i
            i = i + 1
        Next
    End Sub
    
  • With

    with可以縮減程式碼量

    '如對同一個物件的多個屬性進行設定時
    Sub propertySet()
        Worksheets("sheet1").Range("A1").Font.Name = "仿宋"
        Worksheets("sheet1").Range("A1").Font.Size = 12
        ...
    End Sub
    '可以簡化為
    Sub withTest()
        With Worksheets("sheet1").Range("J2").Font
            .Name = "微軟雅黑"
            .Size = 12
            .Bold = True
        End With
    End Sub
    '每行都有一個小圓點不要忘
    
  • GoTo

    跳轉語句,待學習