中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VBA新手入門篇 - excel函數(shù),excel公式,excel學(xué)習(xí),excel基礎(chǔ),ex...
VBA新手入門篇
來(lái)源:原創(chuàng) 發(fā)布時(shí)間:2011-3-22 作者:佛山小老鼠
前言
Excel作為使用最廣泛的電子表格軟件,它以操作簡(jiǎn)便,功能豐富和效率高而著稱,非常適合對(duì)計(jì)算機(jī)熟悉程度不高的人員使用。但是隨著學(xué)習(xí)的深入,工作上的需求,提高工作效率,用戶期望Excel提供更加自動(dòng)化的操作,這就需要借助Excel VBA。
VBA的優(yōu)點(diǎn):
1.    解決重復(fù)的操作。(大大提高了工作效率)
2.    在Excel的現(xiàn)有基礎(chǔ)上再增添一些更適合自己的新功能
3.    可以自定義函數(shù)(來(lái)簡(jiǎn)化冗長(zhǎng)的公式和計(jì)算,方便初,中級(jí)用戶)
4.      設(shè)置個(gè)性化的操作界面(更適合自己工作的菜單,快捷菜單)
5.      二次開發(fā)
本教材包括的內(nèi)容,前面第一講到第七講是VBA基礎(chǔ)內(nèi)容;第八講到第十五講是提高篇和實(shí)例講解篇
附:書中代碼前面#表示行,如4#表示第4行。
佛山小老鼠編
2010年12月
VBA與宏及VBE窗口的介紹
一.VBA的定義:
內(nèi)置在Excel里一種最簡(jiǎn)單的編程語(yǔ)言。打個(gè)比方我們?nèi)ビ?guó),那我們要會(huì)英文,才能和當(dāng)?shù)氐娜诉M(jìn)行溝通,我們要用和Excel進(jìn)行人機(jī)對(duì)話,那我們要會(huì)VBA,也就是說(shuō)VBA是Excel能識(shí)別的編程語(yǔ)言,也是編程員能識(shí)別的一種最簡(jiǎn)單的編程語(yǔ)言。
二.什么是宏:
宏是一連串動(dòng)作的集合,動(dòng)作是由VBA代碼組成的,打個(gè)比方說(shuō),我們家里以前的洗衣機(jī)是有加水,加洗衣粉,轉(zhuǎn)動(dòng),放水,甩干,現(xiàn)在我們把其它打包成一個(gè)命令按鈕,這樣我們只要按一下,衣服就洗好了,以前要用按五下,這樣就大提高了工作效率,實(shí)現(xiàn)辦公自動(dòng)化。所以接觸過(guò)Excel的朋友都會(huì)通過(guò)錄制宏來(lái)完成一些重復(fù)的工作。
三.VBE窗口的介紹:
1. 進(jìn)入VBE窗口的方法:
因?yàn)閂BE窗口是VBA代碼編輯窗口,我們所有的代碼都在VBE窗口里編寫。
第一種方法:Alt+F11,第二種方法:通過(guò)命令按鈕進(jìn)行,(如圖1)(備注我們常用工具欄上沒(méi)有這個(gè),要從自定義里拖出來(lái)才有),進(jìn)入VBE編輯的方法不只這二種
 
2.VBE窗口的介紹:
A.視圖菜單下:工程資源管理器;屬性窗口;立即窗口。
B.插入菜單下:插入模塊;插入過(guò)程;插入用戶窗體。
C.調(diào)試菜單下:逐語(yǔ)句調(diào)試(快捷鍵F8)。切換斷點(diǎn)(快捷鍵F9)
D.運(yùn)行菜單下:運(yùn)行子過(guò)程(快捷鍵F5)
F.工具菜單下:選項(xiàng)c編輯器格式選項(xiàng)卡c字體大小為11磅
3.代碼的縮進(jìn):
A.Tab鍵右縮進(jìn)
B.Shift+Tab鍵,還原右縮進(jìn)一步
4.模塊:
A.普通模塊,對(duì)象模塊(工作表模塊,工作薄模塊),窗體模塊,類模塊。
錄制宏 修改宏 保存宏 指定宏  自定義按鈕 加載宏
方法: 選擇第3行Ú選擇工具菜單Ú宏Ú錄制新宏,跳出一個(gè)對(duì)話框,確定后,選擇第3行,單擊鼠標(biāo)右鍵,行高Ú設(shè)置為30Ú確定,然后選擇工具Ú宏Ú停止錄制
ALT+F11,打開VBE編輯窗口,左鍵雙擊模塊,這就是剛才錄制的宏代碼,
1#  Sub Macro1()
2#    Selection.RowHeight = 30
3 #  End Sub
代碼解析 第一行表示子過(guò)程開始;第二行Selection是選擇的意思, RowHeigh行高,選擇的行高設(shè)置為30;第三行是結(jié)束的意思
繼續(xù),在畫圖工具中選擇橢圓,再左鍵點(diǎn)橢圓,右鍵,點(diǎn)擊指定宏,做到這步以后,選擇第6行,然后點(diǎn)擊橢圓,看看效果,這個(gè)就是錄制宏到使用宏
方法:打開工作薄”選擇性粘貼的宏(未做的)”備注這個(gè)工作薄在課件里 Ú選擇工作表1Ú選擇工具菜單Ú宏Ú錄制宏,跳出一個(gè)對(duì)話框,絕對(duì)引用Ú確定后Ú選擇區(qū)域B3:C7Ú單擊鼠標(biāo)的右鍵Ú復(fù)制Ú選擇區(qū)域H3:I7Ú選擇性粘貼Ú加Ú確定Ú雙擊單元格E3, Ú單擊單元格E4Ú停止錄制
ALT+F11,打開VBE編輯窗口,這就是剛才錄制的宏代碼,
1#  Sub Macro1()'
2#  ' Macro1 Macro
'3#   宏由 999寶藏網(wǎng) 錄制,時(shí)間: 2011-2-7
4#      Range("B3:C7").Select
5#      Selection.Copy
6#     Range("H3:I7").Select
7#    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
8#  End Sub
代碼解析:第四行代碼單元B3:C7選中,第五行代碼復(fù)制B3:C7,第六行代碼單元格H3:I7選中,第7行代碼選擇性粘貼,加
然后把宏指定給一個(gè)橢圓,試試
方法: 選擇工具菜單Ú宏Ú錄制宏,跳出一個(gè)對(duì)話框,絕對(duì)引用Ú選擇區(qū)域B3:C7,按Delete鍵然Ú停止錄制
ALT+F11,打開VBE編輯窗口,這就是剛才錄制的宏代碼,
1#  Sub Macro2()' Macro2 Macro
' 宏由 雨林木風(fēng) 錄制,時(shí)間: 2010-11-24
2#      Range("B3:C7").Select
3#      Selection.ClearContents
4#  End Sub
代碼解釋: 第二行單元格B3:C7選中;第三行清除選中的單元格里的數(shù)字
然后把宏指定給一個(gè)橢圓,試試
修改宏:
修改第2個(gè)宏
匯總()
2#    Range("B3:C7").Copy
3#    Range("H3:I7").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
4#    Application.CutCopyMode = 0
5#  End Sub
代碼解釋第二行復(fù)制單元格B3:C7;第三行把復(fù)制的數(shù)據(jù)選擇性粘貼到單元格H3:I7, Operation:=xlAdd的意思是選擇加;第四行代碼取消復(fù)制模式,也就是那個(gè)虛線框
5. 保存宏
一種是保存在當(dāng)前工作薄,一種是保存在個(gè)人宏工作薄,另一種保存新工作薄
 
自定義按鈕
視圖菜單Ú工具欄Ú自定義Ú命令選項(xiàng)卡Ú類別Ú宏Ú按住左鍵不放,把自定義按鈕那個(gè)笑臉拖到常用工具欄上Ú把光標(biāo)放在那個(gè)笑臉上(前提條件是不要關(guān)閉自定義工具欄Ú單擊鼠標(biāo)右鍵Ú命名Ú更改按鈕圖像Ú指定宏(指定你要實(shí)現(xiàn)的此功能
 
 
指定宏:
可以把宏指定給圖片,自選圖形。
的語(yǔ)法基礎(chǔ)
1.數(shù)據(jù)類型:
學(xué)生的姓名,學(xué)生的年齡,學(xué)生的出生日期(常用數(shù)據(jù)類型有:Byte(字節(jié)型); Integer (整型); Long(長(zhǎng)整型); Single(單精度浮點(diǎn)型,7位有效數(shù)字); Double (雙精度浮點(diǎn)型,有效數(shù)字15位); String(字符串型);對(duì)象型(例如單元格區(qū)域和工作表); Variant(變體型,也叫萬(wàn)能的類型)
2.變量:變量可以使程序變得更加富有活力
(1).變量名稱要注意幾點(diǎn):
A.不能把關(guān)鍵字做變量名
B.部分符號(hào)不能在變量中出現(xiàn),如(#*%!)
C.不區(qū)分大小寫,但我們一般大小寫混寫,第一個(gè)字母大寫,其它的小寫。
D.也可以使用中文名稱,但是盡量不用中文名稱,如果在英文版會(huì)報(bào)錯(cuò)。
(2)變量聲明(電腦里劃出一個(gè)儲(chǔ)存區(qū)域來(lái)儲(chǔ)存變量的值,變量的聲明就決定了變量的大小,而大小就是我們前面講的數(shù)據(jù)類型決定的)
(3)變量的聲明方式
A.語(yǔ)法格式:  Dim  變量 as 數(shù)據(jù)類型.如Dim i as Integer
B.也可以一行定義多個(gè)變量,之間用逗號(hào)分開
如 Dim i As Integer, F As String, D As Long
(4).強(qiáng)制聲明:變量使用前聲明是一個(gè)好習(xí)慣,由于VBA里可以不聲明變量,因此用戶會(huì)忘記這一點(diǎn),所以我們要求變量進(jìn)行強(qiáng)制聲明(工具菜單==選項(xiàng)==編輯器==要求聲明變量)
(5)變量的作用域:
A.過(guò)程級(jí)變量
B.模塊級(jí)變量
c.全局級(jí)變量
3.運(yùn)算符和表達(dá)式:
(1).算術(shù)運(yùn)算符:有+,-,*,/,&
(2).比較運(yùn)算符:=,<>,>=,<=,Like
(3).邏輯運(yùn)算符:And,Or,Not
(4)表達(dá)式:右邊的值賦給運(yùn)算符左邊的
Range對(duì)象
Range對(duì)象是Excel應(yīng)用程序中最常用的對(duì)象,一個(gè)Range對(duì)象代表一個(gè)單元格、一行、一列、包含一個(gè)或者更多單元格區(qū)域(可以是連續(xù)的單元格,也可以是不連續(xù)的單元格)中選定的單元格,在操作Excel 內(nèi)的任何區(qū)域之前都需要將其表示為一個(gè)Range對(duì)象,然后使用該Range對(duì)象的方法和屬性。
1.單元格的引用方法及應(yīng)用
在VBA中經(jīng)常需要引用單元格或單元格區(qū)域,主要有以下幾種方法。
Range屬性
VBA中可以使用Range屬性返回單元格或單元格區(qū)域,如下面的代碼所示。
1#  Sub 選擇1()
2#       Sheet1.Range("A1:D9, D1:D9").Select
3#  End Sub
代碼解析:第二行單元格A1:D9和單元格D1:D9同時(shí)選中
“選擇1”過(guò)程使用Select方法選中A1:A9,D1:D9單元格區(qū)域。
Range屬性返回一個(gè)Range對(duì)象,該對(duì)象代表一個(gè)單元格或單元格區(qū)域,語(yǔ)法如下:
Range(Cell1, Cell2)
參數(shù)Cell1是必需的,必須為 A1 樣式引用的宏語(yǔ)言,可包括區(qū)域操作符(冒號(hào))、相交區(qū)域操作符(空格)或合并區(qū)域操作符(逗號(hào))。也可包括美元符號(hào)(即絕對(duì)地址,如“$A$1”)。
Cells屬性
使用Cells屬性返回一個(gè)Range對(duì)象,如下面的代碼所示
Sub 輸數(shù)字1()
Dim I As Integer
For I = 1 To 10
Sheet1.Cells(I, 1) = I
Next I
End Sub
代碼解析:
“ 輸數(shù)字1”過(guò)程使用For...Next語(yǔ)句為工作表中的A1:A10單元格區(qū)域填入序號(hào)1到10。
Cells屬性指定單元格區(qū)域中的單元格,語(yǔ)法如下:
Cells(RowIndex, ColumnIndex)
參數(shù)RowIndex是可選的,表示引用區(qū)域中的行序號(hào)。
參數(shù)ColumnIndex是可選的,表示引用區(qū)域中的列序號(hào)。
如果缺省參數(shù),Cells屬性返回引用對(duì)象的所有單元格。
Cells屬性的參數(shù)可以使用變量,因此經(jīng)常應(yīng)用于在單元格區(qū)域中循環(huán)
在VBA中可以將A1引用樣式或命名區(qū)域名稱使用方括號(hào)括起來(lái),作為Range屬性的快捷方式,這樣就不必鍵入單詞“Range”或使用引號(hào),如下面的代碼所示。
Sub 輸字2()
[A1:A10] = "佛山小老鼠"
End Sub
代碼解析:
“輸字2”過(guò)程使用快捷記號(hào)為單元格區(qū)域賦值。
第2行代碼使用快捷記號(hào)將活動(dòng)工作表中的A1:A10單元格賦值為”佛山小老鼠”
注意 使用快捷記號(hào)引用單元格區(qū)域時(shí)只能使用固定字符串而不能使用變量。
Offset屬性
可以使用Range對(duì)象的Offset屬性返回一個(gè)基于引用的Range對(duì)象的單元格區(qū)域,如下面的代碼所示。
Sub 輸數(shù)字3()
Sheet1.Range("A1:A10").Offset(1, 1) = 2
End Sub
代碼解析:
“輸數(shù)字3”過(guò)程使用Range對(duì)象的Offset屬性選中A1:A10單元格偏移一行一列后的區(qū)域B2:B11,且在B2:B11輸入了數(shù)字2
應(yīng)用于Range對(duì)象的Offset 屬性的語(yǔ)法如下:
expression.Offset(RowOffset, ColumnOffset)
參數(shù)expression是必需的,該表達(dá)式返回一個(gè)Range對(duì)象。
參數(shù)RowOffset是可選的,區(qū)域偏移的行數(shù)(正值、負(fù)值或 0(零))。正值表示向下偏移,負(fù)值表示向上偏移,默認(rèn)值為 0。
參數(shù)ColumnOffset是可選的,區(qū)域偏移的列數(shù)(正值、負(fù)值或 0(零))。正值表示向右偏移,負(fù)值表示向左偏移,默認(rèn)值為 0。
Resize屬性
使用Range對(duì)象的Resize屬性調(diào)整指定區(qū)域的大小,并給單元格區(qū)域賦值,如下面的代碼所示。
Sub 輸數(shù)字4()
Sheet1.Range("A1").Resize(3, 3) = “佛山小老鼠”
End Sub
使用Union方法可以將多個(gè)非連續(xù)區(qū)域連接起來(lái)成為一個(gè)區(qū)域,從而可以實(shí)現(xiàn)對(duì)多個(gè)非連續(xù)區(qū)域一起進(jìn)行操作,如下面的代碼所示。
Sub 輸數(shù)5()
Union(Sheet1.Range("A1:A9"), Sheet1.Range("D1:D9,G1:G9")) = "佛山小老鼠"
End Sub
也可以用代碼
Sub AA()
Range("A1:D9,D1:D9,G1:G9") = "佛山小老鼠"
End Sub,
不過(guò)要記得中間是用逗號(hào)分開,只能是一對(duì)雙引號(hào)
代碼解析:
“輸數(shù)字4”過(guò)程給單元格區(qū)域A1:A9和D1:D9,G1:G9所組成的區(qū)域賦值為”佛山小老鼠。Union方法返回兩個(gè)或多個(gè)區(qū)域的合并區(qū)域,語(yǔ)法如下:
expression.Union(Arg1, Arg2, ...)
其中參數(shù)expression是可選的,返回一個(gè)Application對(duì)象。
參數(shù)Arg1, Arg2, ...是必需的,至少指定兩個(gè)Range對(duì)象。
UsedRange屬性
使用UsedRange屬性返回指定工作表上已使用單元格組成的區(qū)域,如下面的代碼所示。
Sub 選擇2()
Sheet1.UsedRange.Select
End Sub
代碼解析:
“選擇2”過(guò)程使用UsedRange屬性選擇工作表上已使用單元格組成的區(qū)域,包括空單元格。
8) Cells(數(shù)字),一個(gè)單元格有一個(gè)數(shù)字代表,因?yàn)橐恍杏?56個(gè)單元格,257就是第二行的第一個(gè)單元格如
Sub AA()
Cells(257) = "小老鼠"
End Sub
語(yǔ)句(一)
一.With   End With可以對(duì)代碼進(jìn)行精減
精簡(jiǎn)前的如下
1#  Sub Macro1()
2#  ' Macro1 Macro
3#  ' 宏由 999寶藏網(wǎng) 錄制,時(shí)間: 2011-2-8
4#      Selection.Font.Bold = True
5#      With Selection.Font
6#          .Name = "宋體"
7#          .Size = 18
8#          .Strikethrough = False
9#          .Superscript = False
10#         .Subscript = False
11#         .OutlineFont = False
12#          .Shadow = False
13#        .Underline = xlUnderlineStyleNone
14#        .ColorIndex = xlAutomatic
15#    End With
16#    Selection.Font.ColorIndex = 3
17#  End Sub
代碼解析:第4行代碼選中字體加粗;第五行到15中間用了一個(gè)With  End With語(yǔ)句;第6行字體為宋體;第7行字體大小為18磅,Size是大小的意思;第8行Strikethrough是刪除線的意思;第9行代碼Superscript是上標(biāo)的意思;第10行代碼Subscript是下標(biāo)的意思; 第11行OutlineFont字體空心的意思;第12行代碼Shadow是陰影的意思;第13行代碼是下劃線類型為無(wú);14行字體的顏色為自動(dòng)
精簡(jiǎn)后的如下
1#  Sub Macro1()
2#    With Selection.Font
3#          .Name = "宋體"
4#          .Size = 18
5#          .Bold = True
6#          .ColorIndex = 3
7#    End With
8#  End Sub
代碼解析:第2行選中的單元格字體進(jìn)行設(shè)置;第3行代碼字體為宋體;第4行代碼字體大小為18磅;第5行代碼字體加粗;第6行代碼字體顏色為紅色
二.If       Then   判斷語(yǔ)句(單行結(jié)構(gòu))
1#  Sub 按鈕1_單擊()
2#    If Range("a1").Value >= 60 Then
3#      Range("b1") = "及格"
4#    End If
5#  End Sub
代碼解析:第2行代碼判斷,如果A1單元格的值大于等于60,那么;第3代碼在單元格B1輸入及格
三. If       Then  Else(簡(jiǎn)單的多行分支結(jié)構(gòu))
1#  Sub 按鈕1_單擊()
2#     If Range("A1").Value < 60 Then
3#       Range("B1").Value = "不及格"
4#   Else
5#       Range("B1").Value = "及格"
6#  End If
7#   End Sub
代碼解析:
第2行代碼判斷,如果A1單元格的值小于60,那么;第3行代碼給單元格B1賦值為”不及格”;第4行代碼是否則;第5行代碼給單元格B1賦值為”及格”
四. If       Then   ElseIf  Then (ElseIf  Then … )Else復(fù)雜的多行分支結(jié)構(gòu)
1#  Sub 加循環(huán)的復(fù)雜的多行分支結(jié)構(gòu)()
2#   Dim I As Integer
3#      For I = 2 To 11
4#          If Range("A" & I) < 60 Then
5#                Range("B" & I) = "不及格"
6#          ElseIf Range("A" & I) < 70 Then
7#                Range("B" & I) = "及格"
8#        ElseIf Range("A" & I) < 80 Then
9#                 Range("B" & I) = "良好"
10#        Else
11#                Range("B" & I) = "優(yōu)秀"
12#       End If
13#     Next I
14#   End Sub
代碼解析:
第2行定義變量I為整型;第3行代碼到13行代碼用了一個(gè)循環(huán)語(yǔ)句For  Next;第4行代碼判斷A列從A2開始到A11的值是否小于60;第5代碼如果第4代碼小于60,那么對(duì)應(yīng)的B列從B2開始到B11單元格顯示不及格,同理第6行,第7行,第8行,第9行代碼。
五.Inputbox 和Msgbox函數(shù)
1#     Sub 按鈕1_單擊()
2#       On Error Resume Next
3#       Application.DisplayAlerts = 0
4#         Sheet1.Delete
5#       Application.DisplayAlerts = 1
6#       ANS = MsgBox("只剩下最后一張工作表了,不能刪除", 48, "佛山小老鼠提醒你")
7#     End Sub
代碼解析:
第2行過(guò)程中有錯(cuò)語(yǔ)就忽掉;第3行阻止彈出保存提示對(duì)話框;第4行代碼工作表1刪除;第5行代碼還原第3行代碼,這兩個(gè)是一對(duì)一對(duì)的用;第6行代碼用輸出函數(shù)MsgBox彈出提示
1#     Sub 按鈕1_單擊()
2#        S = InputBox("請(qǐng)輸入姓名", "輸入提醒")
3#        Range("A1") = S
4#     End Sub
代碼解析:
:第2行用輸入函數(shù)InPutbox提醒輸入姓名且把其輸入的值賦給S;第3行代碼把S賦給單元格A1
語(yǔ)句(二)
一.For    Next語(yǔ)句
1#     Sub 按鈕1_單擊()
2#       Dim I As Byte, C As Integer
3#       For I = 1 To 100
4#           C = C + I
5#       Next I
6#       MsgBox C
7#     End Sub
代碼解析:
:第2行定義變量I為字節(jié)型,C為整型;第3行代碼到第5行用了一個(gè)循環(huán)語(yǔ)句For  Next ,給I賦值,賦值范圍從1到100;第4行代碼累加;第6行代碼用輸出函數(shù)MsgBox顯示最后累加的C
二  For   Each   Next語(yǔ)句
1#     Sub 按鈕1_單擊()
2#        Dim RG As Range
3#           For Each RG In Range("A1:A10,D1:D10")
4#              C = C + RG
5#           Next RG
6#        MsgBox C
7#        End Sub
代碼解析:
第2行代碼定義變量RG為對(duì)象型,單元格對(duì)象型;第3代碼到第5行代碼用了一個(gè)循環(huán)語(yǔ)然For Each  Next語(yǔ)句,以RG在單元格區(qū)域A1:A10,D1:D10中循環(huán)一次;第4行代碼,把單元格RG的值累加;第6行代碼用輸出函數(shù)MsgBox顯示最后累加的C
三.Select  Case 語(yǔ)句
1#     Sub aa()
2#         Dim I As Integer
3#         For I = 2 To 7
4#             m = Sheet1.Range("a" & I)
5#             Select Case m
6#                 Case Is >= 80
7#                     Sheet1.Range("b" & I) = "優(yōu)秀"
8#                 Case Is >= 70
9#                      Sheet1.Range("b" & I) = "良好"
10#                             Case Is >= 60
11#                                   Sheet1.Range("b" & I) = "及格"
12#                            Case Else
13#                                   Sheet1.Range("b" & I) = "不及格"
14#                           End Select
15#                        Next I
16#                    End Sub
代碼解析:
第2行定義變量I為整型;從第3行到15行用了一個(gè)循環(huán)語(yǔ)句For  Next,給I賦值從2到7;第4行代碼把工作表1從A2開始到A7的值賦給m;從第5行代碼到14行代碼用了Select Case  End Select語(yǔ)句
錯(cuò)誤處理和代碼調(diào)試
一  錯(cuò)誤類型(語(yǔ)法錯(cuò)誤,編譯錯(cuò)誤,運(yùn)行錯(cuò)誤,邏輯錯(cuò)誤)
A.語(yǔ)法錯(cuò)誤(把關(guān)鍵字寫錯(cuò),把Dim寫成Dam)
B.編譯錯(cuò)誤(If后面沒(méi)有Then就換行)
C.運(yùn)行錯(cuò)誤(比方說(shuō)0不能作為除數(shù),運(yùn)行是就會(huì)報(bào)錯(cuò))
D.邏輯錯(cuò)誤(運(yùn)行的結(jié)果和我們預(yù)期的發(fā)生了偏差
1#                Sub 除數(shù)為0()
2#                    A = Range("A1")
3#                    B = Range("B1")
4#                    C = A / B
5#                    MsgBox C
6#                End Sub
代碼解析:
第2行代碼把單元格A1的值賦給A;第3行把單元格B1的值賦給B;第4行代碼把A除以B的值賦給C;第5行代碼用輸出函數(shù)MsgBox顯示C
1#                Sub 除數(shù)為0的解決()
2#                   A = Range("A2")
3#                   B = Range("B2")
4#                   If B = 0 Then
5#                        Exit Sub
6#                   Else
7#                      C = A / B
8#                   End If
9#                   MsgBox C
10#             End Sub
代碼解析:
第2行代碼把單元格A1的值賦給A;第3行把單元格B1的值賦給B;第4行代碼用了一個(gè)判斷語(yǔ)句IF。如果單元格B2的值為0,那么;第5行代碼退出程序。
1#                Sub 除數(shù)為字符串的()
2#                   A = Range("A3")
3#                   B = Range("B3")
4#                   If B = 0 Then
5#                       Exit Sub
6#                   Else
7#                   C = A / B
8#                   End If
9#                    MsgBox C
10#             End Sub
代碼解析:
同上
1#                Sub 除數(shù)為字符串解決的的()
2#                   A = Range("A4")
3#                   B = Range("B4")
4#                        If B = 0 Or IsNumeric(A) = False Or IsNumeric(B) = False Then
5#                             Exit Sub
6#                         Else
7#                            C = A / B
8#                      End If
9#                   MsgBox C
10#             End Sub
代碼解析:第4行代碼如果B4單元格的數(shù)據(jù)不是數(shù)字或A4單元格的數(shù)據(jù)不是數(shù)字,那么;第5行代碼程序就退出
工作表和工作薄對(duì)象
一.      對(duì)象
對(duì)象是用來(lái)表述事物的一個(gè)抽象概念。任何事物都可以看做是由對(duì)象構(gòu)成的,Excel也不例外,它是由各種大大小小的對(duì)象構(gòu)成。這些對(duì)象有機(jī)的組合構(gòu)成了一個(gè)有序的層次結(jié)構(gòu)。在生活中,我們接觸的任何實(shí)體都可以看做是一個(gè)對(duì)象。比方說(shuō)一個(gè)氣球,它就是一個(gè)對(duì)象,氣球的大小,顏色,這就是氣球的屬性,氣球的飛行就是氣球的方法,氣球在充氣或者放氣的的時(shí)候就會(huì)產(chǎn)生一些事情,描述這些事情的過(guò)程就是事件。
二.對(duì)象的屬性:
工作表改名:
1#                Sub 按鈕2_單擊()
2#                    Sheet1.Name = "曹老師"
3#                End Sub
代碼解析:第2行代碼改名工作表1的名字為“曹老師”
三.對(duì)象的方法
工作薄的添加
1#                Sub 按鈕1_單擊()
2#                      Workbooks.Add
3#                End Sub
代碼解析:第2行代碼添加工作薄
工作表的添加:
在第一個(gè)工作表前面添加
1#                Sub 按鈕1_單擊()
2#                   Worksheets.Add BEFORE:=Worksheets(1)
3#                    Sheet1.Select
4#                End Sub
代碼解析:第2行代碼在第一個(gè)工作前面添加一個(gè)工作表
在最后一個(gè)工作表添加
1#                Sub 按鈕1_單擊()
2#                    Worksheets.Add after:=Worksheets(Sheets.Count)
3#                     Sheet1.Select
4#                End Sub
代碼解析:第2行代碼在最后一個(gè)工作前面添加一個(gè)工作表,Sheets.Count是總的工作表數(shù)
工作薄加密
1#                Sub 按鈕1_單擊()
2#                ThisWorkbook.Password = "197698"
3#                End Sub
代碼解析:第2行代碼給當(dāng)前工作薄加密,密碼為197698
打開加密的工作薄
1#                Sub 按鈕1_單擊()
2#                Workbooks.Open Filename:=ThisWorkbook.Path & "\加密工作薄.XLS", Password:="197698"
3#                End Sub
代碼解析:第2行代碼給打開加密過(guò)的工作薄,工作薄路徑是和當(dāng)前工作薄的路徑一樣的,密碼為197698
工作表加密:
1#         Sub 加密工作表()
2#             Sheet1.Protect Password:="197698"
3#         End Sub
代碼解析:第2行代碼把工作表1加密,密碼為197698, Protect是保護(hù)的意思, Password是密碼的意思
工作表解密
1#         Sub 工作表解密()
2#             Sheet1.Unprotect
3#         End Sub
代碼解析:第2行代碼打開解密對(duì)話框, UnProtect是解密的意思
目錄的制作
首先錄制一個(gè)宏,錄制一個(gè)超鏈接的宏,得到如下代碼:
Sub Macro2()
'
' Macro2 Macro
' 宏由 雨林木風(fēng) 錄制,時(shí)間: 2011-5-12
'
'
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Sheet3!A1", TextToDisplay:="A"
End Sub
通過(guò)錄制宏,我們得到插入超鏈接的代碼
1#                Sub 提取工作表名()
2#                    Dim I  As Integer
3#                        For I = 1 To Sheets.Count
4#                        Worksheets(1).Range("A" & I) = Sheets(I).Name
5#                        Worksheets(1).Hyperlinks.Add Anchor:=Worksheets(1).Range("A" & I), _
6#                       Address:="", SubAddress:=Worksheets(I).Name & "!A1"
7#                       Next I
8#                    End Sub
代碼解析第2行代碼:定義變量I為整型;第3行到第7代碼用了一個(gè)循環(huán)語(yǔ)句For  Next ;第4行代碼提取工作表的名稱放置在工作表1的A1單元格起;第5行代碼在工作表1從A1單元格起建立超鏈接,鏈接到相應(yīng)的工作表的A1單元格
Sub 清除()
Range("A1:A13") = ""
End Sub
代碼解析第2行代碼清除單元格A1:A13的數(shù)據(jù)
Sub 返回目錄()
Worksheets(1).Select
End Sub
代碼解析第2行代碼選中工作表1. 這樣就達(dá)到了返回目錄的效果了
工作表和工作薄事件 OnTime和OnKey事件
1.       工作表事件:
A.在D3:D19里輸入1自動(dòng)顯示“優(yōu)秀”,輸入2自動(dòng)顯示“良好”,輸入3自動(dòng)顯示“及格”,輸入4自動(dòng)顯示不及格
1#                Private Sub Worksheet_Change(ByVal Target As Range)
2#                   m = Target.Column
3#                   n = Target.Row
4#                   If m = 4 And n >= 3 And n <= 19 And IsNumeric(Target) Then
5#                     If Target = 1 Then
6#                        Target = "優(yōu)秀"
7#                    ElseIf Target = 2 Then
8#                       Target = "良好"
9#                    ElseIf Target = 3 Then
10#                    Target = "及格"
11#                ElseIf Target = 4 Then
12#                  Target = "不及格"
13#                Else
14#                 arget = ""
15#               End If
16#              End If
17#             End Sub
B.方便對(duì)數(shù):
1#                Private Sub Worksheet_SelectionChange(ByVal Target As Range)
2#                  M = Target.Row
3#                  Range("A:F").Interior.ColorIndex = xlNone
4#                  If Target.Column < 6 Then
5#                       Range(Cells(M, 1), Cells(M, 6)).Interior.ColorIndex = 50
6#                  End If
7#                End Sub
2.. 工作薄事件和OnTime事件
打開工作薄后15秒自動(dòng)關(guān)閉工作薄
1#                Private Sub Workbook_Open()
2#                    Application.OnTime Now() + TimeValue("00:00:15"), "關(guān)閉工作薄"
3#                End Sub
1#                Sub 關(guān)閉工作薄()
2#                   Application.DisplayAlerts = 0
3#                     ThisWorkbook.Close
4#                  Application.DisplayAlerts = 1
5#                End Sub
6#
2.       Onkey事件
禁用快捷鍵復(fù)制Ctrl+c和右鍵菜單上的復(fù)制按鈕不能用(備注:Alt用%表示,Ctrl用^表示,Shift用+表示)
1#                Sub 禁用()
2#                  Application.CommandBars("cell").Controls(3).Enabled = 0
3#                  Application.OnKey "^{c}", ""
4#                 End Sub
1#                Sub 恢復(fù)()
2#                   Application.CommandBars("cell").Controls(3).Enabled = 1
3#                   Application.OnKey "^{c}"
4#                End Sub
自定義函數(shù)
在我們工作當(dāng)中,有時(shí)EXCEL現(xiàn)有的工作表函數(shù)很難解決問(wèn)題,要不解決起來(lái)很復(fù)雜,這果我們可以用VBA來(lái)自定義函數(shù)(備注:大家盡量用英文名)
Public Function 提數(shù)字(AA)
Dim I As Integer
For I = 1 To Len(AA)
If IsNumeric(Mid(AA, I, 1)) = True Then
提數(shù)字 = 提數(shù)字 & Mid(AA, I, 1)
End If
Next I
End Function
Public Function 提字符串(AA)
Dim I As Integer
For I = 1 To Len(AA)
If IsNumeric(Mid(AA, I, 1)) = False Then
提字符串 = 提字符串 & Mid(AA, I, 1)
End If
Next I
End Function
Public Function 提字母(AA)
Dim I As Integer
For I = 1 To Len(AA)
If Asc(Mid(AA, I, 1)) >= 64 And Asc(Mid(AA, I, 1)) <= 122 Then
提字母 = 提字母 & Mid(AA, I, 1)
End If
Next I
End Function
Public Function 字母(AA)
Dim I As Integer
For I = 1 To Len(AA)
If Mid(AA, I, 1) Like "[A-Z]" Or Mid(AA, I, 1) Like "[a-z]" Then
字母 = 字母 & Mid(AA, I, 1)
End If
Next I
End Function
Public Function 字母和數(shù)字(AA)
Dim I As Integer
For I = 1 To Len(AA)
If Mid(AA, I, 1) Like "[A-Z]" Or Mid(AA, I, 1) Like "[a-z]" Or Mid(AA, I, 1) Like "[0-9]" Then
字母和數(shù)字 = 字母和數(shù)字 & Mid(AA, I, 1)
End If
Next I
End Function
Public Function 漢字(AA)
Dim I As Integer
For I = 1 To Len(AA)
If Not (Mid(AA, I, 1) Like "[A-Z]" Or Mid(AA, I, 1) Like "[a-z]" Or Mid(AA, I, 1) Like "[0-9]" Or Mid(AA, I, 1) Like "[[-`]") Then
漢字 = 漢字 & Mid(AA, I, 1)
End If
Next I
End Function
Function 反向文本(文本 As Range)
反向文本 = StrReverse(文本)
End Function
Public Function 反(x)
Dim i As Integer
For i = Len(x) To 1 Step -1
反 = 反 & Mid(x, i, 1)
Next i
EndFunction
Public Function 佛山小老鼠算成績(jī)(請(qǐng)用戶輸入分?jǐn)?shù))
佛山小老鼠算成績(jī) = IIf(請(qǐng)用戶輸入分?jǐn)?shù) < 60, "不及格", IIf(請(qǐng)用戶輸入分?jǐn)?shù) < 70, "及格", IIf(請(qǐng)用戶輸入分?jǐn)?shù) < 80, "良好", "優(yōu)秀")))
End Function
添加快捷菜單
在我們工作當(dāng)中為了方便自己,提高工作效率,把我們經(jīng)常用到的功能代碼放在快捷菜單,指定給按鈕圖標(biāo)。
1#                Sub 添加快捷菜單()
2#                  Dim CD As CommandBarButton
3#                  On Error Resume Next
4#                  Application.CommandBars("CELL").Controls("簽名").Delete
5#                Set CD = Application.CommandBars("CELL").Controls.Add(Type:=msoControlButton, BEFORE:=1)
6#                   With CD
7#                        .Caption = "簽名"
8#                        .FaceId = 31
9#                       .OnAction = "簽名"
10#                End With
11#             End Sub
1#    Sub 簽名()
2#        Selection.Value = "佛山小老鼠"
3#    End Sub
1#    Private Sub Workbook_BeforeClose(Cancel As Boolean)
2#       On Error Resume Next
3#       Application.CommandBars("CELL").Controls("簽名").Delete
4#    End Sub
1#    Private Sub Workbook_Open()
2#      Call 添加快捷菜單
3#    End Sub
運(yùn)行后的效果圖如下圖
添加菜單
如果我們要做出適合自己的操作界面,這時(shí)我們要會(huì)添加菜單,這樣把我們的一些命令按扭放在這個(gè)菜單上。方便自己操作。
1#    Sub 添加菜單()
2#    Dim CD As CommandBarPopup
3#    Dim CDX1 As CommandBarButton, CDX2 As CommandBarButton
4#    On Error Resume Next
5#    Application.CommandBars(1).Controls("曹老師").Delete
6#    Set CD = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, BEFORE:=1)
7#        CD.Caption = "曹老師"
8#    Set CDX1 = CD.Controls.Add(Type:=msoControlButton, BEFORE:=1)
9#         With CDX1
10#                    .Caption = "簽名"
11#                    .FaceId = 31
12#                    .OnAction = "簽名"
13#               End With
14#               Set CDX2 = CD.Controls.Add(Type:=msoControlButton, BEFORE:=2)
15#                  With CDX2
16#                      .Caption = "當(dāng)天日期"
17#                      .FaceId = 33
18#                     .OnAction = "當(dāng)天日期"
19#                  End With
20#               End Sub
1#    Sub 當(dāng)天日期()
2#         Selection = Format(Now(), "YYYY-MM-DD")
3#    End Sub
1#    Sub 簽名()
2#         Selection = "佛山小老鼠"
3#    End Sub
1#    Private Sub Workbook_BeforeClose(Cancel As Boolean)
2#       On Error Resume Next
3#       Application.CommandBars(1).Controls("曹老師").Delete
4#    End Sub
1#    Private Sub Workbook_Open()
2#      Call 添加菜單
3#    End Sub
添加后的效果如下:
窗體與控件和音樂(lè)播放器的制作
一  歡迎界面的制作:
1#              Private Sub CommandButton1_Click()
2#                 If TextBox1 <> "" Then
3#                    Label2.Caption = TextBox1.Text & "慧能VBA培訓(xùn)班歡迎你!"
4#                Else
5#                   End
6#                End If
7#              End Sub
1#              Private Sub CommandButton2_Click()
2#                 End
3#              End Sub
 
1#              Sub 按鈕1_單擊()
2#                 歡迎界面.Show 1
3#              End Sub
做好的效果:
二   窗體的應(yīng)用
三   音樂(lè)播放器的制作
1#                Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
2#                Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
3#                Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
4#                Private Const WS_MAXIMIZEBOX = &H10000
5#                Private Const WS_MINIMIZEBOX = &H20000
6#                Private Const GWL_STYLE = (-16)
7#                Private Sub CommandButton1_Click()
8#                aa = Application.GetOpenFilename()
9#                UserForm2.WindowsMediaPlayer1.URL = aa
10#             End Sub
1#                Private Sub CommandButton2_Click()
2#                  UserForm2.WindowsMediaPlayer1.URL = aa
3#                End Sub
1#                Private Sub Label1_Click()
2#                ActiveWorkbook.FollowHyperlink _
1.         Address:="http://www.56.com/h48/uv.index.php?user=caomingwumr", NewWindow:=True
3#                End Sub
4#                Private Sub UserForm_Initialize()
5#                Dim hWndForm As Long, IStyle As Long
6#                hWndForm = FindWindow("ThunderDFrame", Me.Caption)
7#                IStyle = GetWindowLong(hWndForm, GWL_STYLE)
8#                IStyle = IStyle Or WS_MINIMIZEBOX
9#                '  IStyle = IStyle Or WS_MAXIMIZEBOX
10#             SetWindowLong hWndForm, GWL_STYLE, IStyle
11#             End Sub
1#                Private Sub UserForm_Terminate()
2#                   ThisWorkbook.Close
3#                End Sub
1#                Private Sub Workbook_Open()
2#                  Call 播放
3#                  Call RegWrite
4#                End Sub
1#                Sub RegWrite()
2#                Dim WShell As Object
3#                Set WShell = CreateObject("Wscript.Shell")
4#                WShell.RegWrite "HKCU\Software\Microsoft\VBA\Security\LoadControlsInForms", 1, "REG_DWORD"
5#                Set WShell = Nothing
6#                End Sub
怎樣才能不斷的提高VBA水平
現(xiàn)在大家都能編寫簡(jiǎn)單的程序了,其實(shí)VBA入門是相當(dāng)困難的,剛開始看見像外星文一樣的代碼,現(xiàn)在不再陌生了,現(xiàn)在我們?nèi)腴T了,那怎樣提高呢,這就是我們這一講的內(nèi)容,再次學(xué)習(xí)錄制宏,修改宏,通過(guò)不斷的調(diào)試錄制的宏來(lái)了解這些對(duì)象的方法,屬性,下面是錄制一段宏代碼,現(xiàn)在我們一起來(lái)調(diào)試??纯凑{(diào)試后的收獲。
1#              Sub Macro1()
2#                ' Macro1 Macro
3#              ' 宏由 999寶藏網(wǎng) 錄制,時(shí)間: 2011-1-15'
4#              Selection.FormatConditions.Delete
5#              Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
6#              Formula1:="=""小老鼠"""
7#              With Selection.FormatConditions(1).Font
8#                 .Bold = True
9#                 .Italic = False
10#             .ColorIndex = 3
11#          End With
12#          With Selection.FormatConditions(1).Borders(xlLeft)
13#             .LineStyle = xlContinuous
14#             .Weight = xlThin
15#             .ColorIndex = 3
16#          End With
17#          With Selection.FormatConditions(1).Borders(xlRight)
18#             .LineStyle = xlContinuous
19#             .Weight = xlThin
20#             .ColorIndex = 3
21#          End With
22#          With Selection.FormatConditions(1).Borders(xlTop)
23#             .LineStyle = xlContinuous
24#          .   Weight = xlThin
25#             .ColorIndex = 3
26#          End With
27#           With Selection.FormatConditions(1).Borders(xlBottom)
28#              .LineStyle = xlContinuous
29#              .Weight = xlThin
30#              .ColorIndex = 3
31#            End With
32#          End Sub
最常用的語(yǔ)句
1.          Option Explicit '強(qiáng)制對(duì)模塊內(nèi)所有變量進(jìn)行聲明
2.          On Error Resume Next '忽略錯(cuò)誤繼續(xù)執(zhí)行VBA代碼,避免出現(xiàn)錯(cuò)誤消息
3.          On Error GoTo 100 '當(dāng)錯(cuò)誤發(fā)生時(shí)跳轉(zhuǎn)到過(guò)程中的某個(gè)位置
4.          On Error GoTo 0 '恢復(fù)正常的錯(cuò)誤提示
5.          Application.DisplayAlerts=False '在程序執(zhí)行過(guò)程中使出現(xiàn)的警告框不顯示
6.          Application.ScreenUpdating=False '關(guān)閉屏幕刷新,加快程序運(yùn)行
7.          Application.ScreenUpdating=True '打開屏幕刷新
8.          Option Compare Text '字符串不區(qū)分大小寫
9.          Workbooks(“book1.xls”).Activate '激活名為book1的工作簿
10.       ThisWorkbook.Save '保存工作簿
11.       ThisWorkbook.close '關(guān)閉當(dāng)前工作簿
12.       ActiveWorkbook.Sheets.Count '獲取活動(dòng)工作薄中工作表數(shù)
13.       ActiveWorkbook.name  '返回活動(dòng)工作薄的名稱
14.       ThisWorkbook.Name ‘返回當(dāng)前工作簿名稱
15.       ThisWorkbook.FullName ‘返回當(dāng)前工作簿路徑和名稱
16.       Workbooks.Add() '創(chuàng)建一個(gè)新的工作簿
17.       ActiveWorkbook.Sheets(i).Name '獲取工作表i的名稱
18.       ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines '切換工作表中的網(wǎng)格線顯示,這種方法也可以用在其它方面進(jìn)行相互切換,即相當(dāng)于開關(guān)按鈕
19.       ActiveSheet.UsedRange.Rows.Count ‘當(dāng)前工作表中已使用的行數(shù)
20.       Rows.Count ‘獲取工作表的行數(shù)(注:考慮向前兼容性)
21.       Sheets(Sheet1).Name= “Sum” '將Sheet1命名為Sum
22.       ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一個(gè)新工作表在第一工作表前
23.       Worksheets(Array(“sheet1”,”sheet2”)).Select '同時(shí)選擇工作表1和工作表2
24.       Sheets(“sheet1”).Delete或 Sheets(1).Delete '刪除工作表1
25.       ActiveSheet.UsedRange.FormatConditions.Delete ‘刪除當(dāng)前工作表中所有的條件格式
26.       Cells.Hyperlinks.Delete ‘取消當(dāng)前工作表所有超鏈接
27.       ActiveSheet.PageSetup.Orientation=xlLandscape
28.       或ActiveSheet.PageSetup.Orientation=2 '將頁(yè)面設(shè)置更改為橫向文件路徑
29.       單元格/單元格區(qū)域
30.       ActiveCell.CurrentRegion.Se或Range(ActiveCell.End(xlUp),ActiveCell.End(xlDown)).Select選擇當(dāng)前活動(dòng)單元格所包含的范圍,上下左右無(wú)空行
31.       Cells.Select ‘選定當(dāng)前工作表的所有單元格
32.       Range(“A1”).ClearContents '清除活動(dòng)工作表上單元格A1中的內(nèi)容
33.       Selection.ClearContents '清除選定區(qū)域內(nèi)容
34.       Range(“A1:D4”).Clear '徹底清除A1至D4單元格區(qū)域的內(nèi)容,包括格式
35.       Cells.Clear '清除工作表中所有單元格的內(nèi)容
36.       ActiveCell.Offset(1,0).Select '活動(dòng)單元格下移一行,同理,可下移一列
37.       Range(“A1”).Offset(ColumnOffset:=1)或Range(“A1”).Offset(,1) ‘偏移一列
38.       Range(“A1”).Offset(Rowoffset:=-1)或Range(“A1”).Offset(-1) ‘向上偏移一行
39.       Range(“A1”).Copy Range(“B1”) '復(fù)制單元格A1,粘貼到單元格B1中
40.       Range(“A1:D8”).Copy Range(“F1”) '將單元格區(qū)域復(fù)制到單元格F1開始的區(qū)域中
41.       Range(“A1:D8”).Cut Range(“F1”) '剪切單元格區(qū)域A1至D8,復(fù)制到單元格F1開始的區(qū)域中
42.       Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”) '復(fù)制包含A1的單元格區(qū)域到工作表2中以A1起始的單元格區(qū)域中,注:CurrentRegion屬性等價(jià)于定位命令,由一個(gè)矩形單元格塊組成,周圍是一個(gè)或多個(gè)空行或列
43.       ActiveWindow.RangeSelection.Count '活動(dòng)窗口中選擇的單元格數(shù)
44.       Selection.Count '當(dāng)前選中區(qū)域的單元格數(shù)
45.       cells.count ‘返回當(dāng)前工作表的單元格數(shù) Cells.Item(5,3) ‘引單元格 Selection.Columns.Count ‘當(dāng)前選中的單元格區(qū)域中的列數(shù)
46.       Selection.Rows.Count ‘當(dāng)前選中的單元格區(qū)域中的行數(shù)
47.       ActiveSheet.UsedRange.Row  ‘獲取單元格區(qū)域中使用的第一行的行號(hào)
48.       Rng.Column ‘獲取單元格區(qū)域Rng左上角單元格所在列編號(hào)名稱
49.       Range(“A1:C3”).Name=“computer” ‘命名A1:C3區(qū)域?yàn)閏omputer
50.       或Range(“D1:E6”).Name=“Sheet1!book” ‘命名局部變量,即Sheet1上區(qū)域D1:E6為book或 Names(“computer”).Name=“robot” ‘將區(qū)域computer重命名為robot
51.       Names(“book”).Delete ‘刪除名稱
52.       Names.Add Name:=“Total”,RefersTo:=123456 ‘將數(shù)字123456命名為Total。注意數(shù)字不能加引號(hào),否則就是命名字符串了。
53.       Names.Add Name:=“ProduceNum”,RefersTo:=“=$B$1”,Visible:=False ‘將名稱隱藏
54.       ActiveWorkbook.Names(“Com”).Name ‘返回名稱字符串
55.       公式與函數(shù)
56.       Application.WorksheetFunction.IsNumber(“A1”) '使用工作表函數(shù)檢查A1單元格中的數(shù)據(jù)是否為數(shù)字
57.       Range(“A:A”).Find(Application.WorksheetFunction.Max(Range(“A:A”))).Activate,'激活單元格區(qū)域A列中最大值的單元格
58.       MsgBox “Hello!” '消息框中顯示消息Hello
59.       Ans=MsgBox(“Continue?”,vbYesNo) '在消息框中點(diǎn)擊“是”按鈕,則Ans值為vbYes;點(diǎn)擊“否”按鈕,則Ans值為vbNo。
60.       Userform1.Show ‘顯示用戶窗體
61.       Userform1.Hide ‘隱藏用戶窗體
62.       Application.EnableEvents=False '禁用所有事件
63.       Application.EnableEvents=True '啟用所有事件,注:不適用于用戶窗體控件觸發(fā)的事件
64.       Application.OnKey “^I”,”macro” '設(shè)置Ctrl+I鍵為macro過(guò)程的快捷鍵
65.       Application.CutCopyMode=False ‘退出剪切/復(fù)制模式
66.       Workbooks.Close ‘關(guān)閉所有打開的工作簿
67.       ThisWorkbook.Path,ActiveWorkbook.Path ‘返回當(dāng)前工作簿的路徑(注:若工作簿未保存,則為空)
68.       ThisWorkbook.Saved
69.       ActiveWorkbook.Saved ‘返回工作簿的存儲(chǔ)值(若已保存則為False)
70.        Application.Visible = False ‘隱藏工作簿
71.       Application.Visible = True ‘顯示工作簿,注:可與用戶窗體配合使用,即在打開工作簿時(shí)將工作簿隱藏,只顯示用戶窗體.可設(shè)置控制按鈕控制工作簿可見
72.       ActiveSheet.Columns("B").Insert ‘在A列右側(cè)插入列,即插入B列
73.       ActiveSheet.Columns("E").Cut,ActiveSheet.Columns("B").Insert  ‘以上兩句將E列數(shù)據(jù)移至B列,原B列及以后的數(shù)據(jù)相應(yīng)后移
74.       ActiveSheet.Columns("B").Cut
75.       ActiveSheet.Columns("E").Insert ‘以上兩句將B列數(shù)據(jù)移至D列,原C列和D列數(shù)據(jù)相應(yīng)左移一列
76.       ActiveSheet.Calculate ‘計(jì)算當(dāng)前工作表
77.       ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetHidden ‘正常隱藏工作表,同在Excel菜單中選擇“格式——工作表——隱藏”操作一樣
78.       ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetVeryHidden‘隱藏工作表,不能通過(guò)在Excel菜單中選擇“格式——工作表——取消隱藏”來(lái)重新顯示工作表
79.       ThisWorkbook.Worksheets(“sheet1”).Visible=xlSheetVisible ‘顯示被隱藏的工作表Worksheets("sheet1").Visible = False(True) ‘隱藏(顯示)工作表
80.       ThisWorkbook.Worksheets.Add Count:=2, Before:=ThisWorkbook.Worksheets(2)
或 ThisWorkbook.Workshees.Add ThisWorkbook.Worksheets(2), , 2  ‘在第二個(gè)工作表之前添加兩個(gè)新的工作表
81.       ThisWorkbook.Worksheets(3).Copy ThisWorkbook.Worksheets(2) ‘復(fù)制第三個(gè)工作表到第二個(gè)工作表之前
82.       ThisWorkbook.ActiveSheet.Columns.ColumnWidth = 20 ‘改變工作表的列寬為20
83.       ThisWorkbook.ActiveSheet.Columns.ColumnWidth,ThisWorkbook.ActiveSheet.StandardWidth ‘將工作表的列寬恢復(fù)為標(biāo)準(zhǔn)值
84.       ThisWorkbook.ActiveSheet.Columns(1).ColumnWidth = 20 ‘改變工作表列1的寬度為20
85.       ThisWorkbook.ActiveSheet.Rows.RowHeight = 10 ‘改變工作表的行高為10
86.       ThisWorkbook.ActiveSheet.Rows.RowHeight = _
87.       ThisWorkbook.ActiveSheet.StandardHeight ‘將工作表的行高恢復(fù)為標(biāo)準(zhǔn)值
88.       ThisWorkbook.ActiveSheet.Rows(1).RowHeight = 10 ‘改變工作表的行1的高度值設(shè)置為10
89.       ThisWorkbook.Worksheets(1).Activate ‘當(dāng)前工作簿中的第一個(gè)工作表被激活
90.       ThisWorkbook.Worksheets("Sheet1").Rows(1).Font.Bold = True ‘設(shè)置工作表Sheet1中的行1數(shù)據(jù)為粗體
91.       ThisWorkbook.Worksheets("Sheet1").Rows(1).Hidden = True ‘將工作表Sheet1中的行1隱藏
92.       ActiveCell.EntireRow.Hidden = True ‘將當(dāng)前工作表中活動(dòng)單元格所在的行隱藏
93.       注:同樣可用于列。
94.       ActiveSheet.Shapes.AddPicture "d:\sx.jpg", True, True, 60, 20, 400, 300 '在當(dāng)前工作表中插入一張d盤中名為sx的圖片
95.       ActiveSheet.Range("C1").AddComment '在當(dāng)前工作表的單元格C1中添加批注
96.       Weekday(Date) '獲取今天的星期,以數(shù)值表示,1-7分別對(duì)應(yīng)星期日至星期六
97.       ActiveCell.Value = UCase(ActiveCell.Value) '將當(dāng)前單元格中的字符轉(zhuǎn)換成大寫
98.       (128) IsEmpty (ActiveCell.Value) '判斷活動(dòng)單元格中是否有值
99.       ActiveSheet.Cells(1, 1).Interior.ColorIndex = 3 ‘將單元格的背景色設(shè)置為紅色
100.    ActiveSheet.Cells(1, 1).Font.Name = "Times New Roman" ‘設(shè)置字體類型
101.    ActiveSheet.Cells(1, 1).Font.Italic = TRUE ‘設(shè)置字體為斜體
102.    ActiveSheet.Cells(1, 1).Font.ColorIndex = 3 ‘設(shè)置字體顏色為紅色
103.    ActiveSheet.Cells(1, 1).Font.Size = 24 ‘設(shè)置字體大小為24磅
104.    ActiveSheet.Cells(1, 1).Font.Bold = TRUE ‘設(shè)置字體加粗
105.    ActiveSheet.Range("A1:D10").ClearFormats '清除單元格區(qū)域A1至D10中的格式
106.    ActiveSheet.Range("B8").ClearComments '刪除單元格B8中的批注文字
107.    (ActiveCell.Value=Shell("C:\Windows\System32\Calc.exe", vbNormalFocus) '開啟Windows計(jì)算器
108.    Range("A1:Z30").Hyperlinks.Delete ‘刪除指定范圍所有的鏈接
109.    Rows(1).Hyperlinks.Delete  ‘刪除第1行中所有的鏈接
110.    Selection.Hyperlinks.Delete ‘刪除所選區(qū)域的所有鏈接
111.    Columns(1).Hyperlinks.Delete ‘刪除第1列中所有的鏈接
最常用關(guān)鍵字
1.          工程(Project): 是指用于創(chuàng)建一個(gè)應(yīng)用程序的文件的集合。
2.          對(duì)象(Object): 可控制的某個(gè)東西,例如窗體和控件。
3.          窗體(Form):  應(yīng)用程序的用戶界面。
4.          控件(Control): 指的是各種按鈕、標(biāo)簽、文本框等。
5.          屬性(Property):是指對(duì)象的特征,如大小、標(biāo)題或顏色。
6.          工作表(Worksheet):指EXCEL文件里的工作表,例如sheet1、sheet2等。
7.          模塊(Module):指在VBA工程中存放獨(dú)立于用戶定義對(duì)象代碼的容器。
8.          過(guò)程(Sub):容納和組織代碼的限定符號(hào),一般和End Sub聯(lián)用,不返回結(jié)果。
9.          函數(shù)(Function):
10.       標(biāo)簽(Label):用來(lái)顯示文本。
11.       文本框(Textbox):用來(lái)提供給用戶輸入文本。
12.       命令按鈕(CommandButton):用來(lái)組織和提供程序功能。
13.       列表框(ListBox):用來(lái)提供給用戶選擇列表中的數(shù)據(jù)。
14.       組合框(ComboBox):用來(lái)提供給用戶下拉選擇列表中的數(shù)據(jù)。
15.       選項(xiàng)按鈕(OptionButton):用來(lái)提供給用戶指定單項(xiàng)數(shù)據(jù),一般成組使用。
16.       復(fù)選框(CheckBox):用來(lái)提供給用戶指定多項(xiàng)數(shù)據(jù),一般成組使用。
17.       Public:聲明公共類型的數(shù)據(jù);
18.       Private:聲明私有類型的數(shù)據(jù);
19.       Static:聲明靜態(tài)類型的數(shù)據(jù);
20.       Dim:聲明數(shù)據(jù)類型;如:Dim myCell As Range
21.       reDim:定義未顯式聲明的數(shù)組的維數(shù)和元素;
22.       Const:聲明常量數(shù)據(jù);如:Const limit As Integer = 33
23.       As:一般用于聲明數(shù)據(jù)類型中的“As Type”子句;
24.       Type:聲明用戶自定義數(shù)據(jù)類型;
25.       Byte:字節(jié)類型;
26.       Integer:整型數(shù)值類型;
27.       Long:長(zhǎng)整型數(shù)值類型;
28.       String:字符串類型;
29.       Boolean:邏輯類型;
30.       Single:?jiǎn)尉阮愋停?div style="height:15px;">
31.       Double:雙精度類型;
32.       Currency:貨幣數(shù)值類型;
33.       Decimal:可以容納小數(shù)的數(shù)值類型;
34.       Variant:任何數(shù)字值或字符串值;
35.       Object:對(duì)象類型;
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
完全手冊(cè)Excel VBA典型實(shí)例大全:通過(guò)368個(gè)例子掌握
VBA基礎(chǔ)02--對(duì)象操作
用VBA打開或禁止單元格拖放(自動(dòng)填充)功能
值得你珍藏的VBA編程常用代碼語(yǔ)句
EXCEL登錄系統(tǒng)
自學(xué)資料(Excel VBA)[收集整理15]
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服