簡介
宏編碼,即實現宏的代碼。所謂宏,就是一些命令組織在一起,作為一個單獨命令完成一個特定任務。
MicrosoftWord中對宏定義為:“宏就是能組織到一起作為一獨立的命令使用的一系列word命令,它能使日常工作變得更容易”。Word使用宏語言VisualBasic將宏作為一系列指令來編寫。
計算機科學裡的宏是一種抽象的,根據一系列預定義的規則替換一定的文本模式。Excel辦公軟體自動集成了“VBA”高級程式語言,用此語言編制出的程式可認為是一種宏編碼。
宏語言
宏語言是一類程式語言,其全部或多數計算是由擴展宏完成的。宏語言並未在通用編程中廣泛使用,但在文本處理程式中套用普遍。
①宏定義
c程式提供的預處理功能之一。包括帶參數的宏定義和不帶參數的宏定義。具體是指用一個指定的標誌符來進行簡單的字元串替換或者進行闡述替換。形式為:
#define標誌符[(參數表)]字元串
②宏名
在上定義中的標誌符被稱為“宏名”。
③宏展開
在c程式編譯時將宏名替換成字元串的過程稱為“宏展開”。
常用EXCEL編碼舉例
1.本示例為設定密碼視窗
If Application.InputBox("請輸入密碼:") = 1234 Then
[A1] = 1 '密碼正確時執行
Else: MsgBox "密碼錯誤,即將退出!" '此行與第2行共同設定密碼
End If
2.本示例為設定工作表密碼
ActiveSheet.Protect Password:=641112 ' 保護工作表並設定密碼
ActiveSheet.Unprotect Password:=641112 '撤消工作表保護並取消密碼
3.本示例關閉除正在運行本示例的工作簿以外的其他所有工作簿,並保存其更改內容
For Each w In Workbooks
If w.Name <> ThisWorkbook.Name Then
w.Close SaveChanges:=True
End If
Next w
4.每次打開工作簿時,本示例都最大化 Microsoft Excel 視窗
Application.WindowState = xlMaximized
5.本示例顯示活動工作表的名稱
MsgBox "The name of the active sheet is " & ActiveSheet.Name
6.本示例保存當前活動工作簿的副本
ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLS"
7.下述過程激活工作簿中的第四張工作表
Sheets(4).Activate
8.下述過程激活工作簿中的第1張工作表
Worksheets(1).Activate
9.本示例通過將 Saved 屬性設為 True 來關閉包含本段代碼的工作簿,並放棄對該工作簿的任何更改
ThisWorkbook.Saved = True
ThisWorkbook.Close
10.本示例對自動重新計算功能進行設定,使 Microsoft Excel 不對第一張工作表自動進行重新計算
Worksheets(1).EnableCalculation = False
11.下述過程打開 C 盤上名為 MyFolder 的資料夾中的 MyBook.xls 工作簿
Workbooks.Open ("C:\MyFolder\MyBook.xls")
12.本示例顯示活動工作簿中工作表 sheet1 上單元格 A1 中的值
MsgBox Worksheets("Sheet1").Range("A1").Value
13.本示例顯示活動工作簿中每個工作表的名稱
For Each ws In Worksheets
MsgBox ws.Name
Next ws
14.本示例向活動工作簿添加新工作表 , 並設定該工作表的名稱
Set NewSheet = Worksheets.Add
NewSheet.Name = "current Budget"
15.本示例將新建的工作表移到工作簿的末尾
'Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Move After:=Sheets(Sheets.Count)
End Sub
16.本示例將新建工作表移到工作簿的末尾
'Private Sub App_WorkbookNewSheet(ByVal Wb As Workbook, _
ByVal Sh As Object)
Sh.Move After:=Wb.Sheets(Wb.Sheets.Count)
End Sub
17.本示例新建一張工作表,然後在第一列中列出活動工作簿中的所有工作表的名稱
Set NewSheet = Sheets.Add(Type:=xlWorksheet)
For i = 1 To Sheets.Count
NewSheet.Cells(i, 1).Value = Sheets(i).Name
Next i
18.本示例將第十行移到視窗的最上面
Worksheets("Sheet1").Activate
ActiveWindow.ScrollRow = 10
19.當計算工作簿中的任何工作表時,本示例對第一張工作表的 A1:A100 區域進行排序
'Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
With Worksheets(1)
.Range("a1:a100").Sort Key1:=.Range("a1")
End With
End Sub
20.本示例顯示工作表 Sheet1 的列印預覽
Worksheets("Sheet1").PrintPreview
21.本示例保存當前活動工作簿
ActiveWorkbook.Save
22.本示例保存所有打開的工作簿,然後關閉 Microsoft Excel
For Each w In Application.Workbooks
w.Save
Next w
Application.Quit
23.下例在活動工作簿的第一張工作表前面添加兩張新的工作表
Worksheets.Add Count:=2, Before:=Sheets(1)
24.本示例設定 15 秒後運行 my_Procedure 過程,從現在開始計時
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
25.本示例設定 my_Procedure 在下午 5 點開始運行
Application.OnTime TimeValue("17:00:00"), "my_Procedure"
26.本示例撤消前一個示例對 OnTime 的設定
Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
Procedure:="my_Procedure", Schedule:=False
27.每當工作表重新計算時,本示例就調整 A 列到 F 列的寬度
'Private Sub Worksheet_Calculate()
Columns("A:F").AutoFit
End Sub
28.本示例使活動工作簿中的計算僅使用顯示的數字精度
ActiveWorkbook.PrecisionAsDisplayed = True
29.本示例將工作表 Sheet1 上的 A1:G37 區域剪下,並放入剪貼簿
Worksheets("Sheet1").Range("A1:G37").Cut
更多詳見參考。
Word中的代碼編寫行號
首先需要創建一個宏,如何來做呢?以Word 2010為例,在工具列中,選擇“視圖”,點擊“宏”,如下圖所示。
然後點擊【查看宏】:
在彈出的對話框中,點擊【創建】。
在VBA的代碼區寫下如下代碼:
寫完後,點擊保存,退出VBA代碼區。
為了經常能用到這個宏,我們就需要在Word【檔案】->【選項】中,找到【快速訪問工具列】,把這個宏取個好聽的名稱,並配一個圖示,最後,它就乖乖滴出現在快速啟動欄中。過程如下圖所示。
實驗前,原始代碼是沒有行號的:
點擊自己設計的宏圖示,使用宏後的效果如下: