版權歸原作者所有,如有侵權,請聯(lián)系我們

[科普中國]-宏編碼

科學百科
原創(chuàng)
科學百科為用戶提供權威科普內容,打造知識科普陣地
收藏

簡介

宏編碼,即實現(xiàn)宏的代碼。所謂宏,就是一些命令組織在一起,作為一個單獨命令完成一個特定任務。

MicrosoftWord中對宏定義為:“宏就是能組織到一起作為一獨立的命令使用的一系列word命令,它能使日常工作變得更容易”。Word使用宏語言VisualBasic將宏作為一系列指令來編寫。

計算機科學里的宏是一種抽象的,根據(jù)一系列預定義的規(guī)則替換一定的文本模式。Excel辦公軟件自動集成了“VBA”高級程序語言,用此語言編制出的程序可認為是一種宏編碼。

宏語言宏語言是一類編程語言,其全部或多數(shù)計算是由擴展宏完成的。宏語言并未在通用編程中廣泛使用,但在文本處理程序中應用普遍。

①宏定義

c程序提供的預處理功能之一。包括帶參數(shù)的宏定義和不帶參數(shù)的宏定義。具體是指用一個指定的標志符來進行簡單的字符串替換或者進行闡述替換。形式為:
#define標志符[(參數(shù)表)]字符串

②宏名

在上定義中的標志符被稱為“宏名”。

③宏展開

在c程序編譯時將宏名替換成字符串的過程稱為“宏展開”。

常用EXCEL編碼舉例1.本示例為設置密碼窗口
If Application.InputBox("請輸入密碼:") = 1234 Then
[A1] = 1 '密碼正確時執(zhí)行
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 區(qū)域進行排序
'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 過程,從現(xiàn)在開始計時
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.本示例使活動工作簿中的計算僅使用顯示的數(shù)字精度
ActiveWorkbook.PrecisionAsDisplayed = True
29.本示例將工作表 Sheet1 上的 A1:G37 區(qū)域剪下,并放入剪貼板
Worksheets("Sheet1").Range("A1:G37").Cut
更多詳見參考。1

Word中的代碼編寫行號首先需要創(chuàng)建一個宏,如何來做呢?以Word 2010為例,在工具欄中,選擇“視圖”,點擊“宏”,如下圖所示。2

然后點擊【查看宏】:

在彈出的對話框中,點擊【創(chuàng)建】。

在VBA的代碼區(qū)寫下如下代碼:

Sub HangHao()Dim parag As ParagraphDim nLineNum: nLineNum = 0Dim selRge As RangeSet selRge = Selection.RangeFor Each parag In Selection.ParagraphsnLineNum = nLineNum + 1selRge.Paragraphs(nLineNum).Range.InsertBefore (Format$(nLineNum, "00") & " ")NextEnd Sub寫完后,點擊保存,退出VBA代碼區(qū)。

為了經常能用到這個宏,我們就需要在Word【文件】->【選項】中,找到【快速訪問工具欄】,把這個宏取個好聽的名稱,并配一個圖標,最后,它就乖乖滴出現(xiàn)在快速啟動欄中。過程如下圖所示。

實驗前,原始代碼是沒有行號的:

點擊自己設計的宏圖標,使用宏后的效果如下: