VBA筆記
1、VBA數據類型
數據類型 | 存儲空間大小 | 範圍 |
Byte | 1個字節 | 0-255 |
Boolean | 2個字節 | true或false |
Integer | 2個字節 | -32768-32767 |
Long | 4個字節 | — |
Single | 4個字節 | — |
Double | 8個字節 | — |
Currency | 8個字節 | — |
Decimal | 14個字節 | — |
Date | 8個字符 | — |
Object | 4個字節 | 任何Object引用 |
String(變長) | 10字節加字符串長度 | 0到大約20億 |
String(定長) | 字符串長度 | 1到大約65400 |
Variant(數字) | 16個字節 | 任何數字值,最大可達Double的範圍 |
Variant(字符) | 22個字節加字符串長度 | 與變長String有相同的範圍 |
用戶自定義 | 所有元素所需數目 | — |
如果不指定數據類型,VBA自動將變量指定為變體型Variant.
1.1 數據類型的轉換
CBool Boolean 任何有效的字符串或數值表達式
CByte Byte 0-255
CCur Currency -
CDate Date -
CDbl Double -
CDec Decimal 小數的數值
CInt Integer -
CLng Long -
CSng Single -
CStr String -
CVar Variant -
1.2 常量的聲明
[Public | Private] Const constname [As type] = expression
Public:用於在模塊級別中聲明在所有模塊中對所有過程都可以使用的常量,在過程中聲明常量不能使用Public。
Private:用於在模塊級別中聲明只能在包含該聲明的模塊中使用的常數,不能在過程中使用。
2、過程
過程主要分為以下三類:Sub過程、Function過程和Property過程。
過程的命名規則註意事項:過程名可以和本過程的私有變量同名,但卻不能和公有變量同名。
Sub過程語法:
Private | Public | Friend | [Static] Sub name [(arglist)] [statements] [Exit Sub] [statements] End Sub
Public:表示所有模塊的所有其他過程都可訪問這個Sub過程。如果在包含Option Private的模塊中使用,則這個過程在該工作外是不可使用的。
Private:只有在包含其聲明的模塊中的其他過程可以訪問該Sub過程。
Friend:只能在類模塊中使用,表示該Sub過程在整個工程中都是可見的,但對對象實例的控制者是不可見的。
Static:表示在調用時保留Sub過程的局部變量的值。Static屬性對在Sub外聲明的變量不會產生影響。即使過程中也使用了這些變量。
- 模塊級過程:只能在當前模塊中調用的過程。
- 工程級過程:在當前工程中任何地方都可以隨意調用的過程
3、Exit Sub和End的區別
1、是否釋放公有變量
2、是否終止所有程序
4、Workbooks/Workbook/ThisWorkbook/ActiveWorkbook
- Workbook對象代表整個Excel工作簿,即Excel文件。
- Workbooks集合代表所有已經打開的工作簿,加載宏除外。
- ThisWorkbook:代碼所在的Workbook對象。
- ActiveWorkbook:Excel活動窗口中的Workbook對象。
5、Worksheets/Worksheet/Sheets/Activesheet
- Worksheet對象代表一張工作表。
- Worksheets集合包括工作簿中所有的Worksheet對象。
- Sheets集合除了包含工作簿中的所有的Worksheet對象外,還包括工作簿中所有的圖表工作表(Chart)對象和宏表對象。
- Activesheet:用於引用處於活動狀態的工作表。
6、EntireRow/EntireColumn屬性
返回一個Range 對象,該對象代表包含指定區域的整個行/列(或若幹行/列)。只讀。
7、Rows屬性
- 對於 Application 對象,返回代表活動工作表所有行的 Range 對象。如果活動文檔不是工作表,Rows 屬性無效。Range 對象,只讀。
- 對於 Range 對象,返回代表指定區域所有行的 Range 對象。
- 對於 Worksheet 對象,返回代表指定工作表所有行的 Range 對象。
在不用對象識別符的情況下使用此屬性等價於ActiveSheet.Rows。
當應用於含多個選定區域的 Range 對象時,該屬性只返回該區域中第一個子區域內的行。例如,如果 Range 對象有兩個子區域:A1:B2 和 C3:D4,則 Selection.Rows.Count 返回 2 而不是 4。若要在一個可能包含多個選定區域的區域中使用該屬性,請測試 Areas.Count 來判斷該區域是否包含多個選擇區域。如果是,則像第 3 個示例中所示,在該區域中的每個子區域上循環。
8、Columns屬性
應用於 Application 對象的 Columns 屬性。
返回一個 Range 對象,該對象代表活動工作表中的所有列。如果活動文檔不是工作表,則 Columns 屬性無效。只讀。
應用於 Range 對象的 Columns 屬性。
返回 Range 對象,該對象代表指定單元格區域中的列。只讀。
應用於 WorkSheet 對象的 Columns 屬性。
返回一個 Range 對象,該對象代表指定工作表上的所有列。只讀。
在不使用對象識別符的情況下使用此屬性等價於 ActiveSheet.Columns。
當對一個多重選定區域的 Range 對象應用屬性時,此屬性返回的只是所選區域的第一個子區域中的列。例如,如果 Range 對象有兩個子區域 A1:B2 和 C3:D4,那麽,Selection.Columns.Count 的返回值是 2,而不是 4。若要對一個可能包含多重選定區域的區域使用此屬性,請用 Areas.Count 方法測試一下此區域內是否包含多個子區域。如果確實包含多個子區域,可對此區域內的每一子區域進行循環。
9、Row/Column屬性
返回指定區域中第一個子區域的第一行/列的行/列號。Long 類型,只讀。
10、FileDialog屬性
返回一個FileDialog 對象,該對象代表文件對話框的實例。
expression.FileDialog(fileDialogType)
fileDialogType-->MsoFileDialogType 類型,必需。文件對話框的類型。
MsoFileDialogType 可為以下 MsoFileDialogType 常量之一。
msoFileDialogFilePicker: 允許用戶選擇一個文件。
msoFileDialogFolderPicker: 允許用戶選擇一個文件夾。
msoFileDialogOpen: 允許用戶打開一個文件。
msoFileDialogSaveAs: 允許用戶保存一個文件。
11、Application對象
屬性:
A-->ActiveCell、ActiveChart、ActivePrinter、ActiveProtectedViewWindow、ActiveSheet、ActiveWindow、ActiveWorkbook、AlertBeforeOverwriting、Application、AskToUpdateLinks、AutoCorrect、AutoPercentEntry
C-->Caption、CellDragAndDrop、ClipboardFormats、Columns、CommandBars、CopyObjectsWithCells、Cursor、CutCopyMode
D-->DecimalSeparator、Dialogs、DefaultFilePath、DefaultSaveFormat、DeferAsyncQueries、DisplayAlerts、DisplayCommentIndicator、DisplayFormulaAutoComplete、DisplayFullScreen、DisplayFunctionToolTips、DisplayNoteIndicator、DisplayRecentFiles、DisplayScrollBars、DisplayStatusBar
FileDialog、、、
OperatingSystem、Version、Visible、
W-->WarnOnFunctionNameConflict、Watches、Width、Windows、、WindowState、Workbooks、WorksheetFunction、Worksheets、
方法:
ActivateMicrosoftApp:激活一個Microsoft應用程序,如果程序正在運行中,此方法激活正在運行中的程序,否則,此方法創建啟動一個新的應用程序實例。
AddCustomList:為自定義自動填充或者自定義排序增加一個自定義序列,如果增加的序列已存在,此方法將不做什麽。
Calculate:計算所有打開的工作簿或者某個工作簿中的指定工作表或者某個工作表中的指定區域。
CentimetersToPoints:將厘米轉換為點度量(1點=0.035cm)
CheckAbort:
CheckSpelling:
ConvertFormula:
DeleteCustomList:
DoubleClick:
Evaluate:
FindFile:
GetCustomListContents:
GetCustomListNum:
GetOpenFilename:
GetSaveAsFilename:
Goto:
InchesToPoints:將英寸轉換為點度量
InputBox:顯示一個對話框用於用戶輸入,返回輸入在對話框中的信息。
Intersect:返回一個Range對象,它表示兩個或多個範圍的矩形交集。
MailLogoff:
MailLogon:
OnKey:
OnRepeat:如果在運行設置此屬性的過程之後選擇Repeat命令,則設置Repeat項目以及將運行的過程的名稱。
OnTime:在將來指定的時間安排一個程序運行(在一天中特定的時間或者經過一段特定時間後)。
OnUndo:設置Undo命令的文本以及運行設置此屬性的過程後選擇“撤消”命令時運行的過程的名稱。
Quit:關閉Microsoft Excel
Repeat:重復上一次用戶接口操作
Run:運行一個宏或者調用一個函數
SendKeys:將案件發送到活動的應用程序中
Undo:取消上一次用戶接口操作
Union:返回兩至多個區域的聯合
Volatile:將用戶自定義函數標記為易失性函數。一個易失性函數必須被計算無論何時工作表中的任意單元格出現計算時。一個非易失性函數僅當輸入變量改變時重新計算。如果在用戶自定義函數中不使用計算的工作表單元格,此方法將沒有影響。
Wait:暫停正在運行的宏直到一個指定的時間點,如果到達指定的時間點,返回True。
VBA筆記