81、Rem:將活動(dòng)單元格從A5移到A6,并將A6單元格的數(shù)值保存到x變量中
range("A5 ").select此命令就是選擇A5單元格
Activecell.offset(1,0).select
X=activecell.value
82、用代碼窗口中可用F8運(yùn)行宏,Alt+F8顯示宏對話框,Alt+F11可以打開VBE編輯器
83、Option Explicit 在程序代碼前使用該命令,則變量要在聲明后才能使用,否則編譯程序無法識(shí)別該變量,從而產(chǎn)生錯(cuò)誤信息
84、 Load語句用于加載窗體,加載后將占用內(nèi)存,Hide方法使窗體隱藏,但仍在內(nèi)存中,故不再使用窗體時(shí)應(yīng)使用Uuload語句及時(shí)卸載,將內(nèi)存交還系統(tǒng),Show方法用來顯示一個(gè)窗體,格式:窗體名稱.show 模式,模式可取0或1,為1時(shí),不能到其他窗體操作,只有關(guān)閉該窗體后才能對其他窗體操作
85、控件的命名規(guī)則,通常使用3個(gè)字母的前綴命名控件,如Label的前綴為lbl,初學(xué)者最好養(yǎng)成良好的命名習(xí)慣
86、按下Ctrl+Enter鍵單元格不移動(dòng)。
87、按下F2鍵直接在單元格內(nèi)編輯,不需動(dòng)鼠標(biāo)
88、命令按鈕不支持雙擊(Dbclick)事件
89、Private Sub CheckBox1_Click()
If CheckBox1.Value Then
MsgBox "333"
Else
MsgBox "666"
End If
End Sub
本段的主要用意在于明白了If CheckBox1.Value Then與If CheckBox1.Value=True Then
90、Timer是計(jì)時(shí)器,功能是按指定時(shí)間間隔產(chǎn)生定時(shí)事件
91、在一個(gè)語句要分行顯示的地方加一個(gè)或多個(gè)空格,加一個(gè)下劃線_然后回車轉(zhuǎn)入下一物理行,作用在于代碼一行寫不下時(shí)續(xù)行,程序代碼中一行較短時(shí)可加:把多行連成一行顯示
92、if a>15 then
b=10
else
b=100
end if
可改為如下if語句
b=iif(a.15,10,100)
93、F12用于啟動(dòng)另存為對話框
94、x=shell(calc.exe,1)可打開計(jì)算器程序
95、 call語句格式:Call<子過程名>[(<實(shí)際參數(shù)表>)]如果過程本身沒有參數(shù),則實(shí)參和括號(hào)可省略,并報(bào)參數(shù)放在括號(hào)中,另一個(gè)調(diào)用Sub過程的方法是: <子過程名>[<實(shí)際參數(shù)表>]比前一個(gè)少了Call和括號(hào),子過程調(diào)用語句的實(shí)參在數(shù)目、類型、排列上與子過程定義語句的形式參數(shù)表一致
96、自定義函數(shù)一例,求abc三個(gè)數(shù)的平均
Private Function Passed(By Val a As integer, By Val b As integer, By Val c As integer)
ave=(a+b+c)/3
End Sub
在定義時(shí)必須向函數(shù)過程名賦值,而子程序名不能賦值
97、在工作表任意單元格輸入=Cell("filename")可獲得文件的完整路徑、文件名和工作表名
98、在打開Excel文件時(shí)按住Shift鍵,將不運(yùn)行VBA過程,可防止宏病毒,單擊文件 關(guān)閉命令,在點(diǎn)關(guān)閉時(shí)按住Shift鍵將在不運(yùn)行VBA過程的情況下關(guān)閉工作簿,可防止關(guān)閉時(shí)自動(dòng)運(yùn)行的宏病毒。
99、讓一個(gè)變量得到單元格A1到A5的總和(變量設(shè)為X),
X=Sum(Range(“A1:A5”)) 錯(cuò)
X=Application.WorksheetFunction.Sum(Range(“A1:A5”))正確
也就是說必須通過Application的WorksheetFunction屬性間接調(diào)用工作表函數(shù)
100、Rem和'是注釋符,注釋語句是非執(zhí)行語句,要養(yǎng)成對代碼注釋的習(xí)慣。
101、ActiveSheet.Next.Select選擇活動(dòng)工作表下一張工作表,
ActiveSheet.Previous.Select選上一張
102、單元格B2:B10數(shù)值不全為空用IF語句表達(dá)
For Each cl in ActiveSheet.Range("B2:B10")
If cl.Value <> "" then
msgbox "有非空單元格"
Exit For
endif
next
103、用Range引用單元格和單元格區(qū)域
Range("A1") 單元格A1
Range("A1:B5") 從單元格A1到B5區(qū)域
Range("A1:B5 ,B1:B7") 多塊的選定區(qū)域
Range("A:A") A列
Range("1:1") 第一行
Range("A:C") A列到C列的區(qū)域
Range("1:5") 第1行到第5行的區(qū)域
Range("1:1,3:3") 第1、行
Range("A:A,C:C") A列、C列
104、用Cells及編號(hào)引用單元格
Cells(6,1)A6單元格
如果對工作表用Cells屬性時(shí)不指定索引,表示引用工作表上的所有單元格,下例清除活動(dòng)工作簿中工作表Sheet1上所有單元格的內(nèi)容
Worksheets(“sheet1”).Cells.ClearContents
105、可用變量代入單元格索引值,故Cells屬性非常適用于在單元格區(qū)域中循環(huán),如:
For counter=1 To 20
Worksheets(“sheet1”).Cells(counter,3).value=counter
Next counter
106、引用行或列
Rows(1) 第1行
Rows 所有行
Columns(1) 第1列
Columns(“C”) 第3列
Columns 工作表上所有列
106、可用方括號(hào)將A1樣式的引用或命名區(qū)域的名稱括起來,作為Range屬性的快捷方式,這樣就不必鍵入Range 和引號(hào),如
Worksheets(“sheet1”).[A1:B2].clearContents
[MyRange].Value=30
107、用Offset處理按相對于其他單元格的某一位置的常用辦法是使用Offset屬性,本例將活動(dòng)工作表上活動(dòng)單元格下一行和右邊三列的單元格的內(nèi)容設(shè)置為下劃線,如:
ActiveCell.Offset(1,3).font.Underline=XlDouble
108、把別的工作表Sheet2數(shù)據(jù),讀到當(dāng)前工作表的方法列舉
1)[A1]=Sheet2.[A1] 把Sheet2A1單元格的數(shù)據(jù),讀到A1單元格
2)[A2:A4]=Sheet2.[B1] 把Sheet2單元格B1的數(shù)據(jù)讀到A2:到A4單元格
3)Range(B1”)=Sheet2.Range(“B1”) 把Sheet2工作表單元格B1數(shù)據(jù),讀到B1單元格
4)Range(“C1:C3”)=Sheet2.Range(“C1”) 把Sheet2工作表單元格C1數(shù)據(jù),讀到C1:C3
5)Cells(1,4)=Sheet2Cells(1,4) 把Sheet2工作表單元格D1數(shù)據(jù),讀到D1 單元格
6)Range(Cells(1,5),Cells(5,5)=Sheet2.Cells(1,5) 把sheet2工作表單元格E1數(shù)據(jù),讀到E1:E5單元格
7)Selection.Value=Sheet2.[F1] 把Sheet2 工作表單元格[F1]數(shù)據(jù),讀到任何你點(diǎn)選的單元格
109、Sub前有個(gè)Private表示是私有子程序,這個(gè)子程序不會(huì)出現(xiàn)在“宏”對話框中
110、Sub test()
ActiveSheet.Calculate
End Sub重算活動(dòng)工作表
111、編程前應(yīng)該盡可能地多了解Excel對象的屬性、方法
112、每一個(gè)Excel對象的屬性、方法的調(diào)用都要通過OLE連接的一個(gè)或多個(gè)調(diào)用,這些OLE調(diào)用都是需要時(shí)間的,減少使用對象引用能加快VBA代碼的運(yùn)行
113、使用With語句
Workbooks(1).Sheets(1).Range(“A1:A1000”).font.Name=”Pay”
Workbooks(1).Sheets(1).Range(“A1:A1000”).Font.Fontstyle=”Bold”…
改用With語句則運(yùn)行速度加快
例:With Workbooks(1).Sheets(1).Range(“A1:A1000”).font
.Name=”Pay”
.Fontstyle= Bold”
…
End With
114、用set設(shè)置對象變量,以減少對象的訪問,如:
Set MyRange=Workbooks(1).Sheets(1)
Mysheet.Range(“A1”).Value=100
Mysheet.Range(“A2”).Value=200
比直接用Workbooks(1).Sheets(1). Range(“A1”).Value=100
Workbooks(1).Sheets(1). Range(“A2”).Value=200運(yùn)行快
115、在循環(huán)中要盡是減少對象的訪問
For k=1 To 100
Sheets(“sheet1”).select
Cells(k,1).value=Cells(1,1).Value
Next k
更快的代碼是
set TheValue=Cells(1,1).Value
Sheets(“sheet1”).select
For k=1 To 100
Cells(k,1).value=TheValue
116、減少對象的激活和選擇
如果你是通過錄制宏的來學(xué)習(xí)VBA的程序里一定充滿了對象的激活和選擇,如Workbooks(XXX).active 、Sheets(XXX).Select 、Range(XXX).Select等,但事實(shí)上大多數(shù)情況下這些操作不是必須的,如
Sheets(“sheet1”).Select
Range(“A1”).Value=100
Range(“A2”).Value=200
可改為With sheets(“Sheet3”)
.Range (“A1”)=100
.Range (“A2”)=200
117、關(guān)閉屏幕更新是提高運(yùn)行速度的最有效的辦法,推薦使用
Application.ScreenUpdate=False
程序運(yùn)行后再改回來
118、VBA中默認(rèn)的數(shù)據(jù)類型是Variant,你必須選擇使用何種數(shù)據(jù)類型,因?yàn)閂ariant數(shù)據(jù)類型占用存儲(chǔ)空間較大(16或22字節(jié))而且它將影響程序的性能,Vba必須識(shí)別Variant類型的變量中存儲(chǔ)了何種數(shù)據(jù)類型。
119、再列一個(gè)自定義函數(shù)計(jì)算價(jià)格為10%為運(yùn)費(fèi)的簡單函數(shù)例子
Public Function Shipping(Price)
Shipping=Price*0.1
End Function
如還是不懂的話,將上述過程復(fù)制到模塊中,然后在工作表任意單元格中輸入=Shipping(C1)你就會(huì)明白
120、ActiveWindow.DisplyGridlines=False 此句用來關(guān)閉網(wǎng)格線。
轉(zhuǎn)載自 http://bbs./showtopic-169943.aspx