什麼是VBA?它有什麼作用? A.實現Excel中沒有實現的功能。 B.提高運行速度。 C.編寫自定義函數。 D.實現自動化功能。 E.通過插入窗體做小型管理軟體。 VBA在哪裡存放的?怎麼運行? A.模塊中 在Excel 2010中若沒有“開發工具”項,通過“文件”——“選項”——“自定義功能區” ...
什麼是VBA?它有什麼作用?
A.實現Excel中沒有實現的功能。
B.提高運行速度。
C.編寫自定義函數。
D.實現自動化功能。
E.通過插入窗體做小型管理軟體。
VBA在哪裡存放的?怎麼運行?
A.模塊中
在Excel 2010中若沒有“開發工具”項,通過“文件”——“選項”——“自定義功能區”——選中“開發工具”——“確定”(圖1)。
(註:為了提高word2010中插入的圖片的質量,“文件”——“選項”——“高級”——選中“不壓縮文件圖像質量”——“確定”。)
圖1 選中“文件”—“選項”
圖2 ”自定義功能區”—“開發工具”——“確定”
圖3 最終的界面多出了“開發工具”選項卡
圖4 代碼存放在“模塊”中
B.運行巨集
單擊向右的綠三角,即可以運行。
圖5 右綠三角運行
圖6 選中test並“運行”
圖7 運行結果
3.什麼是巨集?巨集和VBA有什麼關係?
巨集(Macro),是一種批量處理。
巨集通常既可以錄製又可以手動編程,而VBA一般是通過編程完成。巨集可以和VBA相結合使用。
4.錄製一個巨集。
A.“開發工具”——“錄製巨集”——巨集名為“輸入100”——“錄製”——在A1單元格中輸入100——“停止”。
B.“巨集”——選中“輸入100”——“執行”。
5.編寫一個巨集。
A.“開發工具”——“Visual Basic”——“視圖”——“工程資源管理器”——“插入”——“模塊”——在右側輸入代碼:
B. 單擊綠右三角即可運行。或者關閉VBA編輯視窗,單擊“巨集”——選中“test”——“執行”。
6.VBA語句
A.巨集程式語句。
B.函數程式語句
C.在程式中應運語句。
D.迴圈語句。
7.VBA對象
A.工作簿對象
Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打開的第N個工作簿
Workbooks ("工作簿名稱")
ActiveWorkbook 正在操作的工作簿
ThisWorkBook '代碼所在的工作簿
B.工作表對象
Sheets("工作表名稱")
Sheet1 表示第一個插入的工作表,Sheet2表示第二個插入的工作表....
Sheets(n) 表示按排列順序,第n個工作表
ActiveSheet 表示活動工作表,游標所在工作表
worksheet 也表示工作表,但不包括圖表工作表、巨集工作表等。
C.單元格對象
cells 所有單元格
Range ("單元格地址")
Cells(行數,列數) Range(“B3”)和Cells(3,2)表示相同的單元格
Activecell 正在選中或編輯的單元格
Selection 正被選中或選取的單元格或單元格區域
8. VBA屬性
VBA屬性就是VBA對象所具有的特點,表示某個對象的屬性如下:對象.屬性=屬性值
Sub ttt()
Range("a1").Value = 100 ’給單元格a1填充數值100
End Sub
Sub ttt1()
Sheets(1).Name = "工作表改名了" ’給工作簿重命名為“工作表改名了”
End Sub
Sub ttt2()
Sheets("Sheet2").Range("a1").Value = "abcd" ’給sheet2工作表的a1單元格填充字元串“abcd”
End Sub
Sub ttt3()
’單元格的內部的填充色
Range("A2").Interior.ColorIndex = 3 ’將A2單元格的背景顏色設置為紅色
Range("A2").Font.ColorIndex = 3 ’將A2單元格的字體顏色設置為紅色
End Sub
9.VBA方法
VBA方法是作用於VBA對象上的動作,表示用某個方法作用於VBA的對象上,可以用下麵的格式:
對象.方法 參數名稱:=參數值
Sub ttt4()
’Range("A1").Copy Destination:= Range("A2")
Range("A1").Copy Range("A2") ’將A1中的內容複製到A2
End Sub
Sub ttt5()
Sheet1.Move before:=Sheets("Sheet3") ’將sheet1表移動到sheet3之前
End Sub
10.在一個鄉政府的文件中要求將Excel中一個表格的身份證號,配對並填充到另一個表中。巨集代碼如下:
Sub 配對()
Dim I, J As Integer
For I = 3 To 225
For J = 4 To 930
If Sheets("Sheet4").Range("b" & I).Value = Sheets("黃門鄉").Range("b" & J).Value Then
Sheets("Sheet4").Range("e" & I).Value = Sheets("黃門鄉").Range("d" & J).Value
End If
Next J
Next I
End Sub
’竟然沒寫入End IF,提示錯誤“Next 缺少 For”
11.判斷語句
A.if判斷語句
Sub 判斷1() '單條件判斷
If Range("a1").Value > 0 Then
Range("b1") = "正數"
Else
Range("b1") = "負數或0"
End If
End Sub
B.IIF判斷語句
Sub 判斷4()
Range("a3") = IIf(Range("a1") <= 0, "負數或零", "負數")
End Sub
C.select判斷
Sub 判斷1() '單條件判斷
Select Case Range("a1").Value
Case Is > 0
Range("b1") = "正數"
Case Else
Range("b1") = "負數或0"
End Select
End Sub
Sub 判斷2() '多條件判斷
Select Case Range("a1").Value
Case Is > 0
Range("b1") = "正數"
Case Is = 0
Range("b1") = "0"
Case Else
Range("b1") = "負數"
End Select
End Sub
Sub 判斷3()
If Range("a3") < "G" Then
MsgBox "A-G"
End If
End Sub
D.區間判斷
Sub if區間判斷()
If Range("a2") <= 1000 Then
Range("b2") = 0.01
ElseIf Range("a2") <= 3000 Then
Range("b2") = 0.03
ElseIf Range("a2") > 3000 Then
Range("b2") = 0.05
End If
End Sub
Sub select區間判斷()
Select Case Range("a2").Value
Case 0 To 1000
Range("b2") = 0.01
Case 1001 To 3000
Range("b2") = 0.03
Case Is > 3000
Range("b2") = 0.05
End Select
End Sub
12.迴圈語句
A.單語句代碼
Sub t1()
Range("d2") = Range("b2") * Range("c2") ’將b2單元格與c2單元格相乘並賦值給d2單元格
Range("d3") = Range("b3") * Range("c3") ’將b3單元格與c3單元格相乘並賦值給d3單元格
Range("d4") = Range("b4") * Range("c4") ’將b4單元格與c4單元格相乘並賦值給d4單元格
Range("d5") = Range("b5") * Range("c5") ’將b5單元格與c5單元格相乘並賦值給d5單元格
Range("d6") = Range("b6") * Range("c6") ’將b6單元格與c6單元格相乘並賦值給d6單元格
End Sub
B.For each 迴圈語句
Sub s1()
Dim rg As Range
For Each rg In Range("a1:b7,d5:e9")
If rg = "" Then
rg = 0
End If
Next rg
End Sub
’註:在a1到b7單元區域和d5到e9單元格區域中的遍歷所有單元格,若為空,就賦值0。
C、For Next語句
Sub t2()
Dim x As Integer
For x = 10000 To 2 Step -3
Range("d" & x) = Range("b" & x) * Range("c" & x)
Next x
End Sub
註:將10000行數據中每隔3行的b列和c列相乘賦值給d列。
D、For Each語句(應用offset方法來制定單元格)
Sub t3()
Dim rg As Range
For Each rg In Range("d2:d18")
rg = rg.Offset(0, -1) * rg.Offset(0, -2)
Next rg
End Sub
’註:offset就是偏移,針對d2而言,Offset(0, -1)指的就是向左移動1個單元格,即c2;而Offset(0, -2)指的就是向左移動2個單元格,即b2;第一個參數是垂直移動,正為向上,負為向下;第二個參數是水平移動,正為向右,負為向左。
圖12 offset函數分析圖
E.Do ……Loop Until語句
Sub t4()
Dim x As Integer
x = 1
Do
x = x + 1
Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
Loop Until x = 18
End Sub
’註:Cell(行,列),即上文中的x指的是行。將第二列和第三列相乘賦值給第四列。
F.Do While……Loop語句
Sub t5()
x = 1
Do While x < 18
x = x + 1
Cells(x, 4) = Cells(x, 2) * Cells(x, 3)
Loop
End Sub
’註:Cell(行,列),即上文中的x指的是行。將第二列和第三列相乘賦值給第四列。
G.Do ……Loop Until語句
Sub s2()
Dim x As Integer
Do
x = x + 1
If Cells(x + 1, 1) <> Cells(x, 1) + 1 Then
Cells(x, 2) = "斷點"
Exit Do
End If
Loop Until x = 14
End Sub
’判斷第1列中的數據不連續,就在其後的單元格輸入一個“斷點”。
13. 學習變數
A、什麼是變數?
所謂變數,就是可變的量。就好象在記憶體中臨時存放的一個小盒子,這個小盒子放的什麼物體不固定。
Dim m As Integer
Sub t1()
Dim X As Integer 'x就是一個整形變數
For X = 1 To 10
Cells(X, 1) = X
Next X
End Sub
B、小盒子里可以放什麼?
1、放數字 2、放文本
Sub t2()
Dim st As String ’st存放字元串
Dim X As Integer ’X存放整數類型
For X = 1 To 10
st = st & "Excel精英培訓"
Next X
End Sub
3、 放對象
Sub t3()
Dim rg As Range ’rg是單元格類型
Set rg = Range("a1") ’Set關鍵詞就是給對象變數指定值
rg = 100
End Sub
4、 放數組
Sub t4()
Dim arr(1 To 10) As Integer, X As Integer
For X = 1 To 10
arr(X) = X
Next X
End Sub
’數組arr(1),arr(2),arr(3)……arr(10)都是整形類型
C、變數的類型和聲明
1 變數的類型
(1)整型(Integer):
表示-32768至32767之間的整數 例如:10 110 20
(2)長整型(Long):
表示-2,147,483,648至2,147,483,647之間的整數
例如:長整型的書寫: 23454444554
(3)單精度實型(Single):
有效數為7位 表示-3.37E+38至3.37E+38之間的實數
(4)雙精度實型(Double):
有效數為15位
(5)字元型(String)
在VB中字元串常量是用雙引號“ ”括起的一串字元,例 如"ABC","abcdefg","123","0","VB程式設計"等。
(6) 邏輯型(Boolean)
邏輯型又稱布爾型,其數據只有True(真)和False(假)兩個值
(7)日期型(Date)
表示日期和時間
用兩個“#”符號把日期和時間的值括起來 如:#08/20/2001#、#2001-08-20#
2 為什麼要聲明變數
&nb