EXCLE VBA 筆記
一、不同儲存位置的巨集:
類型 |
儲存位置 |
可使用巨集範圍 |
備註 |
個人巨集活頁簿 |
目前電腦 |
此電腦所有Excel檔案 |
其他電腦開啟檔案並無巨集 |
現用活頁簿 |
目前檔案 |
僅限於此檔案開啟時執行 |
可將檔案連同巨集寄出 |
VBA撰寫補助功能
- 如果想要加入開發的速度、節省時間,可以將滑鼠的游標放在要執行的副程式之內,然後按下執行的按鈕,這樣就可以馬上執行該副程式,在開發程式時會比較有效率。
- 在VBA 撰寫語法上,按下F1 會導向網頁,顯示語法說明
二、常用指令
'********Range 代表 Excel 目前開啟的工作表指定的儲存格********'
'來選取並操作儲存格
Sub RangeTest()
'Range("B1") = 5 '給值
'Range("E6").Value = 6 '給值
'Range("A6:D6") = 3 '設定行範圍'
Range("A1", "D5") = 4 '設定範圍
'Range("D1_D7") = 2 '依定義名稱,給值
End Sub
'********Cells(row,col)代表 Excel 目前開啟的工作表指定的儲存格********'
'和Range 差不多,只不過它是使用行與列的編號來指定儲存格
Sub CellsTest()
'將第一行第一列的儲存格內容指定為 23
Cells(2, 4).Value = 23
'如果要指定範圍,可以使用兩個 Cells 配合 Range
Range(Cells(1, 1), Cells(4, 2)).Value = 13
'選取指定範圍
Range(Cells(1, 1), Cells(4, 2)).Select
'選擇整個行
Rows(4).Select
'選擇整個列
Columns(4).Select
End Sub
'********WorkSheets物件代表 Excel 目前開啟的工作表********'
Sub WorkSheetsTest()
'刪除資除工作表
Worksheets("Worksheet").Delete
'增加工作表
Worksheets.Add
'命名工作表名稱
Worksheets(1).Name = "Worksheet2"
'在指定工作表上給值
Worksheets("Worksheet").Range("A1").Value = "worksheets"
Worksheets("Worksheet2").Range("A1").Value = "worksheets2"
'跳窗,計算工作表總數量
MsgBox Worksheets.Count
End Sub
'********Workbooks 物件代表 Excel 目前開啟的活頁簿********'
Sub WorkBooksTest()
Dim workBooksName As String
workBooksName = "C:\Users\fw1401\Documents\test.xlsx"
WorkBooks.Open (workBooksName)
MsgBox WorkBooks(2).Name
MsgBox WorkBooks(2).Worksheets(1).Name
'指定活頁簿→工作表→其儲存格內容設定
WorkBooks(WorkBooks(2).Name).Worksheets(WorkBooks(2).Worksheets(1).Name).Range("A1").Value = "Hello"
'儲存活頁簿
WorkBooks(2).Save
'將活頁簿另存新檔
WorkBooks(2).SaveAs "C:\Users\fw1401\Documents\test2.xlsx"
'指定當前活頁簿
WorkBooks(2).Activate
'關閉j指定活頁簿
WorkBooks(2).Close
'關閉所有的活頁簿
WorkBooks.Close
'若要關閉整個 Excel
Application.Quit
End Sub
Sub 刪除空白列範例()
'取得目前列數
Dim count As Integer
count = ActiveSheet.UsedRange.Rows.count
' MsgBox count
'判斷列數第一行是否為空白,是則刪除
For i = count To 1 Step -1
If Cells(i, 1) = "" Then
Rows(i).Delete
End If
Next i
End Sub
'另一種作法
Sub 刪除空白列()
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
四、匯總工作表
'匯總一到三月報表資料
Public Sub 工作表匯總2()
Dim rowCount As Integer
Dim JenCount, FebCount, MarCount, totalCount As Integer
Dim mySheetName As String, mySheetNameTest As String
mySheetName = "報表匯總"
'判斷工作表是否存在
On Error Resume Next
mySheetNameTest = Worksheets(mySheetName).Name
If (Err.Number = 0) Then
Worksheets("報表匯總").Delete
End If
Worksheets.Add
ActiveSheet.Name = "報表匯總"
Worksheets("一月報表").UsedRange.Copy Worksheets("報表匯總").Cells(1, 1)
JenCount = Worksheets("一月報表").UsedRange.Rows.Count
rowCount = Worksheets("報表匯總").UsedRange.Rows.Count
Worksheets("二月報表").UsedRange.Copy Worksheets("報表匯總").Cells(rowCount + 1, 1)
FebCount = Worksheets("二月報表").UsedRange.Rows.Count - 1
'刪除報表標頭
Worksheets("報表匯總").Rows(rowCount + 1).Delete
rowCount = Worksheets("報表匯總").UsedRange.Rows.Count
Worksheets("三月報表").UsedRange.Copy Worksheets("報表匯總").Cells(rowCount + 1, 1)
MarCount = Worksheets("三月報表").UsedRange.Rows.Count - 1
Worksheets("報表匯總").Rows(rowCount + 1).Delete
totalCount = JenCount + FebCount + MarCount
MsgBox "Jen Count:" + CStr(JenCount) + ", Feb Count:" + CStr(FebCount) + ", Mar Count:" + CStr(MarCount) + ",Tatal count:" + CStr(totalCount)
End Sub
留言