VBA入門整理
什麼是VBA
VBA(Visual Basic for Application) 是Visual Basic的一種宏語言,主要用來擴展MicroSoft Office Excel軟件的應用程序功能。
相關資料
VBA學習交流網址:http://www.excelhome.net/
《excel_VBA基礎入門》:
https://vdisk.weibo.com/s/dE3D00COBMN#_loginLayer_1576143430619
VBA有多強大:https://www.zhihu.com/question/318065326/answer/799460430
詳細的VBA基本操作已經在大神編寫的《excel_VBA基礎入門》中說明的非常詳細了,下面就只簡單講解一下常用的相關操作和功能的實現。
常用快捷鍵
Alt + F8 打開宏菜單
Alf + F11 打開VBE(VBA編輯器)
打開“開發工具”菜單
文件 -> 選項
自定義功能區 -> 勾選“開發工具” -> 確定
第一個VBA編程
開發工具 -> 插入 -> 按鈕
拖拽即可繪製一個按鈕,彈出宏菜單窗口,可以修改宏命名,確定
右鍵按鈕 -> 指定宏
點擊新建,打開VBE(VBA編輯器)
輸入如下內容
MsgBox "您點擊了按鈕"
然後去Excel中點擊按鈕,效果如下:
恭喜,您已完成了您的第一個VBA編程
VBA常用語法
在創建按鈕後,輸入的
MsgBox "您點擊了按鈕"
就是VBA的其中一個語法——彈出提示框語法
下面我們將介紹VBA的其他常用語法
數據類型
**數據類型 ** | 存儲空間大小 | 範圍 |
---|---|---|
Byte | 1 個字節 | 0 到 255 |
Boolean | 2 個字節 | True 或 False |
Integer | 2 個字節 | -32,768 到 32,767 |
Long | 4 個字節 | -2,147,483,648 到 2,147,483,647 |
Single (單精度浮點型) | 4 個字節 | 負數時從 -3.402823E38 到 -1.401298E-45;正數時從 1.401298E-45 到 3.402823E38 |
Double (雙精度浮點型) | 8 個字節 | 負數時從 -1.79769313486232E308到-4.94065645841247E-324;正數時從4.94065645841247E-324 到 1.79769313486232E308 |
Currency (變比整型) | 8 個字節 | 從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807 |
Decimal | 14 個字節 | 非常大 |
Date | 8 個字節 | 100 年 1 月 1 日 到 9999 年 12 月 31 日 |
Object | 4 個字節 | 任何 Object 引用 |
String (變長) | 10 字節加字符串長度 | 0 到大約 20 億 |
String(定長) | 字符串長度 | 1 到大約 65,400 |
Variant(數字) | 16 個字節 | 任何數字值,最大可達 Double 的範圍 |
Variant(字符) | 22 個字節加字符串長度 | 與變長 String 有相同的範圍 |
用戶自定義 | 所有元素所需數目 | 每個元素的範圍與它本身的數據類型的範圍相同。 |
聲明變量
Dim 變量名 As 數據類型
修飾符 | 說明 |
---|---|
Dim/Static | 本地變量 |
Dim/Private | 模塊作用域下的變量 |
Dim/Public | 共有變量 |
其中Dim可以省略,
舉個栗子:
Sub 按鈕1_Click()
A = "您點擊了按鈕"
B = #12/21/2019#
MsgBox "A: " & A & Chr(13) & "B: " & B
End Sub
補充:
VBA中使用**&**連接字符串或其他類型
Chr(13)代表的是ASCII編碼中的換行符
時間類型必須使用**#**包起來
聲明常量
Const 常量名 As 數據類型 = 常量的值
聲明數組
Dim/Public 數組名(a to b) as 數據類型
舉個栗子
Sub 按鈕1_Click()
Const length As Integer = 5
Dim arr(length) As Integer
arr(0) = 1
arr(1) = 10
Dim str As String
For i = 0 To 5
str = str & arr(i) & ", "
Next
MsgBox "str: " & str
End Sub
補充:
1.VBA不僅可以定義一維數組,還可以定義二維、三維。。。
2.VBA中數組的長度會比你定義的要多一位
3.數組不能越界
註釋
單引號(’)
常用過程處理語句
IF Else
If 邏輯表達式 1 Then
語句塊 1
ElseIf 邏輯表達式 2 Then
語句塊 2
ElseIf 邏輯表達式 3Then
語句塊 3 …
Else
語句塊 n
End If
Select Case
Select Case 測試表達式
Case 條件表達式 1
語句塊 1
Case 條件表達式 2
語句塊 2
Case 條件表達式 3
語句塊 3
......
Case 條件表達式 n
語句塊 n
Case Else
語句塊 Else
End Select
舉個栗子
Sub 按鈕1_Click()
If [a1].Value = "" Then
MsgBox "A1 單元格沒有輸入數字。"
Exit Sub ' 退出程序
End If
Select Case [a1].Value
Case 0 To 29
MsgBox "差"
Case 30 To 59
MsgBox "不及格"
Case 60 To 79
MsgBox "及格"
Case 80 To 89
MsgBox "良好"
Case Else
MsgBox "優秀"
End Select
End Sub
另一種實現
Sub 按鈕1_Click()
If [a1].Value = "" Then
MsgBox "A1 單元格沒有輸入數字。"
Exit Sub ' 退出程序
End If
Select Case [a1].Value
Case Is < 30
MsgBox "差"
Case Is < 60
MsgBox "不及格"
Case Is < 80
MsgBox "及格"
Case Is < 90
MsgBox "良好"
Case Else
MsgBox "優秀"
End Select
End Sub
For
For 循環變量=初值 to 終值 step 步長
循環體 1
[exit for]
循環體 2
next 循環變量
補充:
1.Next 後面的馴化變量可以省略不寫
For Each
For Each 元素變量 In 對象集合或數組名稱
語句塊 1
[Exit For]
語句塊 2
next 元素變量
舉個栗子
Sub 按鈕1_Click()
Dim i As Integer, sht As Worksheet
i = 1
For Each sht In Worksheets
Cells(i, 1) = sht.Name
i = i + 1 '讓寫入名稱的單元格下移一行
Next
End Sub
Do While
格式1——開頭判斷循環條件:
Do While 循環條件
語句塊 1
[Exit Do]
語句塊 2
Loop
格式2——結尾判斷循環條件:
Do
語句塊 1
[Exit Do]
語句塊 2
Loop While 循環條件
Do Until
格式1——開頭判斷循環條件:
Do Until 循環條件
語句塊 1
[Exit Do]
語句塊 2
Loop
格式2——結尾判斷循環條件:
Do
語句塊 1
[Exit Do]
語句塊 2
Loop Until 循環條件
舉個栗子
Sub 按鈕1_Click()
Dim Lsum As Long, i As Long
i = 1
Do
Lsum = Lsum + i
i = i + 1
Loop Until i > 1000
MsgBox "1 到 1000 的自然數和爲:" & Lsum
End Sub
Go To
舉個栗子
Sub 按鈕1_Click()
Dim Lsum As Long, i As Long
i = 1
x: '爲 go to 語句設置的標籤,必須以英文狀態下的冒號結尾
Lsum = Lsum + i
i = i + 1
If i <= 1000 Then GoTo x '如果 i<=1000,則程序跳到標籤 X 處
MsgBox "1 到 1000 的自然數和爲:" & Lsum
End Sub
實戰-製作Excel歡迎頁面
製作窗體
新建Excel文件,Alt + F11 打開VBE(VBA編輯器),右鍵相應的Excel Project,插入 -> 用戶窗體
在窗體的Picture屬性中,添加你想要展示的歡迎界面圖片
注意:最好是bmp文件,否則可能會提示無效文件
如果打不開,
可以使用Windows自帶的畫圖工具將圖片另存爲BMP文件格式
調整窗口大小至剛好可以將圖片完全展示出來
編寫代碼
右鍵剛纔新建好的窗體 -> 查看代碼
輸入如下代碼:
Private Sub UserForm_Initialize()
Application.OnTime Now() + TimeValue("00:00:03"), "miss"
End Sub
再次右鍵相應的Excel Project,插入 -> 模塊
雙擊新建模塊,輸入如下代碼:
Sub main()
UserForm1.Show
End Sub
Sub miss()
Unload UserForm1
End Sub
雙擊ThisWorkbook,輸入如下代碼:
Private Sub Workbook_Open()
Call main
End Sub
製作完畢
保存後重啓Excel,就可以看到剛纔製作的歡迎界面了
[撒花]
參考Excel下載地址:https://download.csdn.net/download/qq_33204709/12045399