Access培訓
網站公告
·Access快速平臺QQ群號:277422564    ·Access快速開發平臺下載地址及教程    ·歡迎添加微信交流賬號:AccessoftChu    ·如何快速搜索本站文章|示例|資料    
您的位置: 首頁 > 技術文章 > Access數據庫-模塊/函數/VBA

VBA基礎語法

時 間:2019-09-28 22:10:23
作 者:楊雪   ID:42182  城市:南京
摘 要:VBA基礎語法
正 文:

1.變量
    1.Dim <> As <>
    2.規則
        變量名稱必須使用一個字母作為第一個字符?
        變量名稱不能使用空格,句點(.),感嘆號(!)或字符@,&,$,#。
        變量名稱的長度不能超過255個字符?
        不能使用Visual Basic保留關鍵字作為變量名稱?
    3.
        Sub var()
            Dim str As String
            str = "string"
            MsgBox (str)
        End Sub
2.常量
    1.Const <> As <> = <>
    2.規則
        常量名稱必須使用一個字母作為第一個字符?
        常量名稱不能在名稱中使用空格,句點(.),感嘆號(!)或字符@,&,$,#。
        常量名稱的長度不能超過255個字符?
        不能使用Visual Basic保留關鍵字作為常量名稱?
    3.
        Sub const_var()
            Const MyInteger As Integer = 720
            MsgBox (MyInteger)
        End Sub
3.數組
    1.數組聲明的方式與聲明變量相同,只是數組變量的聲明使用括號
    2.規則
        若數組大小被指定為5,但是當數組索引從零開始時,它可以保持6個值
        數組索引不能是負數
        可以在一個數組變量中存儲一個整數,字符串或字符。
    2.數組聲明
        定義
            1. Dim arr1()
            2. Dim arr2(5)
            3. arr3 = Array("apple","Orange","Grapes")
        賦值
            Dim arr(5)
            arr(0) = "1"
            arr(2) = 100
            arr(3) = 2.45
            arr(4) = #10/7/2013#    '日期
            arr(5) = #12:45:00 PM# '時間
    3.多維數組
        定義
            1. Dim arr(2,3)
        賦值
            arr(0, 0) = "Apple"
            arr(0, 1) = "Orange"
            arr(1, 0) = "cucumber"
    4.數組方法
        LBound(ArrayName[,dimension])
            '返回指定數組的最小下標,數組的LBound的結果是零。
            MsgBox ("Line 1 : " & LBound(Array(5, 2, 3)))
        UBound(ArrayName[,dimension])
            '返回指定數組的最大下標。
            MsgBox ("Line 1 : " & UBound(Array(5, 2, 3)))
        Split(expression[,delimiter[,count[,compare]]])
            '返回一個數組,其中包含基于分隔符分割的特定數量的值。
            Split("Red $ Blue $ Yellow","$")
        Join(List[,delimiter])
            '返回一個包含數組中指定數量的子串的字符串
            MsgBox ("Line 1" & " is :" & Join(Array("Red", "Blue", "Yellow"), "---"))
        Filter(inputstrings,value[,include[,compare]])
            '函數返回一個基于零的數組,其中包含基于特定過濾條件的字符串數組的子集。
        IsArray (variablename)
            '返回一個布爾值,指示指定的輸入變量是否是數組變量
            MsgBox ("Line 1 : " & IsArray(Array(1, 2, 3)))
            MsgBox ("Line 1 : " & IsArray("sdfadd"))
4.ReDim語句
    '用于聲明動態數組變量并分配或重新分配存儲空間
    ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
    Sub Constant_demo_Click()
       Dim a() As Variant
       i = 0
       ReDim a(5)
       a(0) = "XYZ"
       a(1) = 41.25
       a(2) = 22
       ReDim Preserve a(7)
       For i = 3 To 7
       a(i) = i
       Next
       'to Fetch the output
       For i = 0 To UBound(a)
          MsgBox a(i)
       Next
    End Sub
5.運算符
    1.算術操作符
        + : 兩個操作數相加
        - : 兩個操作數相減
        * : 兩個操作數相乘
        / : 兩個操作數相除
        % : 模運算符,整數除法后的余數
        ^ : 指數運算符
    2.比較運算符
        = : 檢查兩個操作數的值是否相等。如果是,那么條件是真。
        <> : 檢查兩個操作數的值是否不相等。如果值不相等,則條件為真。
        > : 檢查左操作數的值是否大于右操作數的值。如果是,那么條件是真。
        < : 檢查左操作數的值是否小于右操作數的值。如果是,那么條件是真。
        >= : 檢查左操作數的值是否大于或等于右操作數的值。 如果是,那么條件是真。
        <= : 檢查左操作數的值是否小于或等于右操作數的值。如果是,那么條件是真。
    3.邏輯運算符
        AND : 兩個條件都為真,則表達式為真。
        or : 如果兩個條件中的任何一個為真,則條件為真。
        NOT : 用于反轉其操作數的邏輯狀態。 如果條件成立,那么邏輯非運算符結果是條件不成立。
        XOR : 如果表達式中只有一個表達式的值為True,則結果為True。
    4.連接操作符
        & : 連接兩個值
            1 & 2 = 12
            "1" & "2" = 12
        + : 將兩個值添加為變量,其值是數字
            1 + 2 = 3
            "1" + "2" = 12
6.單元格的格式方法
    1.Range
        Range ("A1") '表示A1單元格
        Range ("A1:A9")   '表示A1-A9單元格
    2.[]
        [A1]    '表示A1單元格
        [A1:A9]     '表示A1到A9單元格
    3.Cells(第幾行,第幾列)
        Cells(1,1)   '表達第一行第一列的單元格
7.VBA對單元格的操作
    1.獲取單元格的值
        Sub alert()
            'A1 = Sheets(1).[a1]    '獲取第一個工作表(表名為工作表1)中A1的值賦值給X
            'A1 = Sheets("工作表1").[a1]
            'A1 = Sheets(1).Cells(1, 1)
            'A1 = Sheets("工作表1").Cells(1, 1)
            A1Range("A1").Value    '獲取當前工作表A1的值
            MsgBox (A1)   '彈出對話框
        End Sub
    1.單元格賦值
        Sub setVal()
            Range("A1").Value = 100   '點擊VBAProject窗口的'運行子過程'
        End Sub
    2.設置單元格的填充色
        Sub setColor()
            Range("B3").Interior.ColorIndex = 3   '值有1-56,代表56種顏色
        End Sub
    3.單元格的復制、粘貼
        Sub cut()
            Range("B3").copy Range("C3")   '將B3的值,復制到C3單元格
        End Sub
    4.單元格的剪切
        Sub cut()
            Range("A1").cut Range("B3")  '將A1的值,剪切到B3單元格
        End Sub
8.條件判斷結構
    if then 語句
        Sub if_test()
            B3 = Range("B3").Value
            If B3 > 10 Then
                MsgBox ("大于10")    '彈出字符串時,必須為雙引號
            ElseIf B3 < 10 Then
                MsgBox ("小于10")
            Else
                MsgBox ("aaaa")
            End If
            MsgBox (B3)
        End Sub
9.選擇判斷結構
    Select Case 語句
        Sub select_test()
            B3 = Range("B3").Value
            Select Case B3
            Case 1 To 10
                msg = "1到10之間"
            Case 11 To 20
                msg = "11到20之間"
            Case 21, 22
                msg = "21,22的值"
            Case Else
                msg = "其他的值"
            End Select
            MsgBox (msg)
        End Sub
10.循環結構
    for next 語句
        Sub for_test()
            For i = 1 To 10 Step 1
                If i > 5 Then
                    Exit For    '跳出for循環
                End If
                Range("D" & i).Value = i    '循環賦值給D1-D10
            Next i
        End Sub
    for each 語句:用于為數組或集合中的每個元素
        Sub for_ecah_test()
            fruits = Array("蘋果", "香蕉", "雪梨")
            For Each Item In fruits
                MsgBox (Item)
            Next
        End Sub
    do  while  loop
        Sub do_while_loop_test()
           Do While i < 5    '在循環開始時,判斷條件是否符合
              If i > 3 Then
                  MsgBox ("跳出循環")
                  Exit Do
              End If
              i = i + 1
              MsgBox ("The value of i is : " & i)
           Loop
        End Sub
        Sub do_while_loop_test()
           Do
              If i > 3 Then
                  MsgBox ("跳出循環")
                  Exit Do
              End If
              i = i + 1
              MsgBox ("The value of i is : " & i)
           Loop While i < 5    '在循環結束時,判斷條件是否符合
        End Sub
11.sub 與 function 的區別
    子過程不需要有返回一個值,而函數可能會或可能不會有返回一個值。
    子程序可以不用call關鍵字來調用?
    子程序總是包含在Sub和End Sub語句中?
過程調用函數:
        Function function_test(ByVal col, ByVal start_row, ByVal end_row)
            total = 0
                For i = start_row To end_row Step 1
                    total = total + Range(col & i).Value
                Next i
            function_test = total
        End Function
        Sub call_function()
            MsgBox ("總和為:" & function_test("A", 1, 5))
        End Sub
    函數調用過程
        Sub test(name As String, age As Integer)
           MsgBox ("姓名:" & name & "年齡 :" & age)
        End Sub
        Function call_sub()
            test "aaa", 22
        End Function
12.字符串函數
    InStr([start,]string1,string2[,compare])
        '函數返回一個字符串第一次出現在一個字符串,從左到右搜索。返回搜索到的字符索引位置。
        MsgBox ("Line 1 : " & InStr(1, “safdfasdf”, "s"))
    InStrRev(string1,string2[,start,[compare]])
        '函數返回一個字符串在另一個字符串中的第一次出現。搜索從右到左
        MsgBox ("Line 1 : " & InStrRev("asdfasdf", "s", 10))
    Lcase(String)
        '將字符串轉換為小寫字母后返回字符串
        MsgBox ("Line 1 : " & LCase("DJUEG"))
    UCase(String)
        '將字符串轉換為大寫字母后返回字符串
        MsgBox ("Line 1 : " & LCase("ioek"))
    Left(String, Length)
        '從字符串的左側返回指定數量的字符
        MsgBox ("Line 1 : " & Left("adfasdf", 2))
    Right(String, Length)
        '從字符串的右側返回指定數量的字符
        MsgBox ("Line 1 : " & Right("adfasdf", 2))
    Mid(String,start[,Length])
        '返回給定輸入字符串中指定數量的字符
        MsgBox ("Line 1 : " & Mid("adfsd", 2))
    Ltrim(String)
        '刪除字符串左側的空格。
        MsgBox "After Ltrim : " & LTrim("   adfasdfsd")
    RTrim(String)
        '刪除字符串右側的空格
        MsgBox "After Ltrim : " & RTrim("adfasdfsd  ")
    Trim(String)
        '刪除給定輸入字符串的前導空格和尾隨空格
        MsgBox "After Ltrim : " & RTrim("   adfasdfsd  ")
    Len(String)
        '返回給定輸入字符串的長度,包括空格
        MsgBox ("Length of var1 is : " & Len("sdf sdfsd  "))
    Space (Number)
        '用特定數量的空格填充字符串
        MsgBox ("aaa" & Space(2) & "bbb")
    StrComp(string1,string2[,compare])
        '比較兩個給定字符串后,返回一個整數值。
        MsgBox ("Line 1 :" & StrComp("Microsoft", "Microsoft"))
    Replace ( string1, find, replacement, [start, [count, [compare]]] )
        '用另一個字符串替換字符串后返回字符串。
        MsgBox ("Line 1 :" & Replace("alphabet", "a", "e", 1, 1))
    String(number,character)
        '使用指定的字符填充指定次數的字符串
        MsgBox ("Line 1 :" & String(3, "$"))
    StrReverse(string)
        '反轉指定的字符串
         MsgBox ("Line 1 : " & StrReverse("VBSCRIPT"))
13.日期函數
    date()
        '返回當前的系統日期
        MsgBox ("The Value of a : " & a)
    cdate(date)
        '將有效的日期和時間表達式轉換為類型日期
        MsgBox ("The Value of a : " & CDate("Jan 01 2020"))
    DateAdd(interval,number,date)
        '將有效的日期和時間表達式轉換為類型日期
        MsgBox ("Line 1 : " & DateAdd("h", 1, "01-Jan-2013 12:00:00"))
    DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
        '返回兩個指定的時間間隔之間的差值。
        MsgBox ("Line 2 : " & DateDiff("q", "01-Jan-09 00:00:00", "01-Jan-10 23:59:00"))
    DatePart(interval,date[,firstdayofweek[,firstweekofyear]])
        '返回給定日期的特定部分
        MsgBox ("Line 4 : " & DatePart("m", "2013-01-15"))
    Day (Date)
        '返回1到31之間的數字,表示指定日期的一天
        MsgBox (Day("2018-06-30"))
    DateSerial(year,month,day)
        '返回指定的日期,月份和年份參數的日期
        MsgBox (DateSerial(2018, 5, 10))
    FormatDateTime(date,format)
        '格式化并返回有效的日期和時間表達式
        MsgBox ("Line 5 : " & FormatDateTime("2018-08-15 20:25", 4))
    IsDate (Expression)
        '判斷是否為日期,它都會返回一個布爾值
           MsgBox ("Line 1 : " & IsDate("Nov 03, 1950"))
    Month (Date)
        '返回1到12之間的數字,表示指定日期的月份。
        MsgBox ("當前的月份的值是:" & Month("2018-06-30"))
    Year (Date)
        '返回一個表示指定日期的年份的整數
        MsgBox (Year("2018-06-30"))
    MonthName(month[,toabbreviate])
        '回指定日期的月份名稱。
        MsgBox ("Line 1 : " & MonthName(1, True))
        MsgBox ("Line 2 : " & MonthName(1, False))
    Weekday(date[,firstdayofweek])
        '返回一個從1到7的整數,表示指定日期的星期幾。
        MsgBox ("Line 1: " & Weekday("2013-05-16", 1))
    WeekdayName(weekday[,abbreviate[,firstdayofweek]])
        '返回指定日期的工作日名稱
        MsgBox ("Line 2 : " & WeekdayName(2, True))
        MsgBox ("Line 3 : " & WeekdayName(1, False))
        MsgBox ("Line 4 : " & WeekdayName(2, True, 0))
        MsgBox ("Line 5 : " & WeekdayName(1, False, 1))


Access軟件網官方交流QQ群 (群號:864245409)       access源碼網店

最新評論 查看更多評論(0)

發表評論您的評論將提升作者分享的動力!快來評論一下吧!

用戶名:
密 碼:
內 容:
 

常見問答

技術分類

相關資源

關于我們 | 服務條款 | 在線投稿 | 友情鏈接 | 網站統計 | 網站幫助