一、文件格式
要使用VBA,excel文件必須保存為啟用宏的工作簿,即xlsm格式。
二、啟動VBA編輯器
打開工作簿后,要啟動VBA編輯器,有兩種方法,一是在工作表的名字上面點擊右鍵,選擇“查看代碼”,另一種就是快捷鍵Alt+F11
三、工程資源管理器簡介
VBA編輯器右邊的樹形目錄就是工程資源管理器,如下圖,列示了一個工程(VBAProject)及其下面的各個對象。一個工作簿就是一個工程,下面的sheet1就代表一張工作表,雙擊它可以查看和編輯這張工作表的代碼,在里面實現(xiàn)各種功能,ThisWorkbook代表整個工作簿。
四、立即窗口、MsgBox與Hello World程序
與所有其它編程語言入門一樣,第一個程序都是輸出一句話:Hello World。
首先選擇菜單欄——視圖——立即窗口打開立即窗口(快捷鍵Ctrl+G),立即窗口的意思就是這里面的代碼在輸入回車之后會被立即執(zhí)行,有點像調(diào)試javascript的Console。
在窗口中輸入
MsgBox "Hello World"
然后回車,就會看到hello world對話框。
五、工作表——Worksheets(1)、Sheets(1)和Sheet1
下面三行代碼都會輸出工作表1的名稱:
MsgBox Worksheets(1).nameMsgBox Sheets(1).nameMsgBox Sheet1.name
Worksheets表示當(dāng)前活動工作簿中所有工作表的集合,Worksheets(1)表示集合中的第1張工作表,也就是Sheet1
Sheets表示當(dāng)前活動工作簿中所有圖表(Charts)和工作表(Worksheets)的集合,也就是說Sheets包含上面的Worksheets
Sheet1直接表示當(dāng)前活動工作簿中的第一張表
六、區(qū)域——Range
比如,Range("A1")表示A1單元格,Range("A1:B2")表示由A1、A2、B1、B2四個單元格組成的區(qū)域,以此類推;如果要表示不連續(xù)的區(qū)域,將多個不連續(xù)區(qū)域用逗號隔開即可,比如Range("A1:B2,C3:D4")
以下代碼輸入?yún)^(qū)域的地址:
MsgBox Sheet1.Range("A1:B2").Address
運行結(jié)果如圖:
七、單元格——Cells
Cells(1,2)——表示第1行第2列的單元格,即B1單元格。
Cells(1,2) = “我是一個單元格”——表示在第1行第2列填上文本“我是一個單元格”
八、流程控制語句
If condition Then
...
End if
---------------------------------------
If condition Then
...
Else
...
End if
----------------------------------------
If condition Then
...
ElseIf condition Then
...
Else
...
End If
-----------------------------------------
For i=0 to 100
...
Next
-----------------------------------------
While condition
...
Wend
-----------------------------------------
Do
...
Loop While condition
-----------------------------------------
九、復(fù)制
單元格復(fù)制:
Cells(1,2).Copy Cells(1,3)
以上代碼將第1行第2列的數(shù)據(jù)復(fù)制到第1行第3列
---------------------------------------------------------
區(qū)域復(fù)制:
Range("A1:B2").Copy Range("C3")
以上代碼將A1:B2區(qū)域的內(nèi)容復(fù)制到C3區(qū)域
----------------------------------------------------------
行或列復(fù)制:
Rows(1).Copy Rows(2) Columns(3).Copy Columns(4)
將第1行的數(shù)據(jù)復(fù)制到底2行
將第3行的數(shù)據(jù)復(fù)制到第4行
----------------------------------------------------------
十、清除——Clear和ClearContent
Range(A1:B2).ClearContent '清除區(qū)域內(nèi)容Range(A1:B2).Clear '清除區(qū)域,包括內(nèi)容和格式等
十一、行和列自適應(yīng)高(寬)度
Rows.AutoFitColumns.AutoFit
十二、跳轉(zhuǎn)到某工作表
跳轉(zhuǎn)到某工作表即激活某個工作表,使它變成活動狀態(tài):
Sheet2.Activate
十三、事件
比如要實現(xiàn)雙擊Sheet1單元格A1時彈窗提示good,那么在工程資源管理器中雙擊Sheet1,打開Sheet1的代碼窗口,窗口頂部第一個下拉菜單選擇worksheet,第二個下拉菜單選擇BeforeDoubleClick,這時代碼窗口就會出現(xiàn)這樣一段代碼:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)End Sub
這段代碼表示Sheet1工作表任意地方被雙擊時會執(zhí)行的操作,但我們要的是A1單元格被雙擊時彈窗,那么還要對被雙擊的地方進行判斷,被雙擊的目標即參數(shù)中的Target,我們根據(jù)地址判斷Target是不是A1,是就彈窗提示,不是就不執(zhí)行任何操作:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Target.Address = "$A$1" Then MsgBox "good"End IfEnd Sub
聯(lián)系客服