- Excel VBA范例大全
- 羅剛君編著
- 3780字
- 2018-12-29 15:15:28
第9章 批注功能的使用
工作表中某些內(nèi)容不便放在單元格中,但有存在的必要性,或者需要對(duì)某單元格數(shù)據(jù)做補(bǔ)充說(shuō)明時(shí),一般都采用對(duì)單元格添加批注的方式處理。本章講解VBA在批注中的運(yùn)用技巧。
● 實(shí)例65快捷鍵添加日期批注并自動(dòng)縮放
● 實(shí)例66批量添加批注
● 實(shí)例67批量刪除批注
● 實(shí)例68為指定列數(shù)據(jù)添加批注
● 實(shí)例69添加圖片背景批注
● 實(shí)例70添加個(gè)性化批注
● 實(shí)例71批量修改批注外觀
● 實(shí)例72為公式添加標(biāo)注
實(shí)例65 快捷鍵添加日期批注并自動(dòng)縮放
【技巧說(shuō)明】 使用快捷鍵添加日期批注并使批注框縮放為適應(yīng)日期數(shù)據(jù)大小。
【案例介紹】 如圖2.66所示。出貨表中的各種產(chǎn)品每月發(fā)一次貨,日期不固定。現(xiàn)需輸入送貨數(shù)量時(shí)標(biāo)示送貨日期,且批注框剛好適應(yīng)日期數(shù)據(jù)之大小。
【案例實(shí)現(xiàn)】 參見(jiàn)以下步驟:
[1] 使用快捷鍵Alt+F11進(jìn)入VBE(Visual Basic Editor)環(huán)境。
[2] 單擊菜單【插入】\【模塊】,打開(kāi)模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub添加批注() Application.OnKey "^{q}", "添加批注" '設(shè)定快捷鍵 ActiveCell.AddComment '添加批注 With ActiveCell.Comment .Visible=False '批注不可見(jiàn) .Text Text:=WorksheetFunction.Text(Date, "YYYY-MM-DD") '批注文本 為日期 .Shape.TextFrame.AutoSize=True '批注大小自動(dòng)縮放 End With End Sub
[4] 關(guān)閉VBE窗口返回到工作表。
[5] 選中單元格C4,利用快捷鍵Alt+F8調(diào)出運(yùn)行宏窗口,然后單擊“執(zhí)行”按鈕,將本程序設(shè)為快捷鍵Ctrl+Q,同時(shí)在C4已建立內(nèi)容為今日日期之批注,如圖2.67所示。以后單擊任意單元格后,只需要利用快捷鍵Ctrl+Q即可建立批注。

圖2.66 待添加日期批注的出貨表

圖2.67 利用快捷鍵產(chǎn)生的批注
提示
本實(shí)例參見(jiàn)光盤樣本:..\第2部分\實(shí)例65.xlsm。
【相關(guān)知識(shí)說(shuō)明】
(1)Application.OnKey:當(dāng)按特定鍵或特定的組合鍵時(shí)運(yùn)行指定的過(guò)程,可用此功能設(shè)定程序的快捷鍵。本例中^{q}即表示快捷鍵Ctrl+Q。OnKey的使用語(yǔ)法為:表達(dá)式.OnKey(Key, Procedure)。其中第一個(gè)參數(shù)可以使用特定的功能鍵。功能鍵與代碼的對(duì)應(yīng)列表見(jiàn)表2.4。
(2)AddComment:為區(qū)域添加批注。
(3)Shape.TextFrame.AutoSize=True:此處表示批注的外框自動(dòng)縮放,以適應(yīng)其中文字的寬度和高度。
表2.4 功能鍵與代碼的對(duì)應(yīng)列表

實(shí)例66 批量添加批注
【技巧說(shuō)明】 批量對(duì)選定區(qū)域添加批注。
【案例介紹】 以實(shí)例65數(shù)據(jù)為例,當(dāng)今日有多個(gè)產(chǎn)品出貨時(shí),不需要每個(gè)單元格使用快捷鍵產(chǎn)生批注,可以批量給區(qū)域添加批注以提升效率。數(shù)據(jù)如圖2.68所示。
【案例實(shí)現(xiàn)】 參見(jiàn)以下步驟:
[1] 使用快捷鍵Alt+F11進(jìn)入VBE(Visual Basic Editor)環(huán)境。
[2] 單擊菜單【插入】\【模塊】,打開(kāi)模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub批量添加批注() For Each Rng In Selection If Rng <> "" Then Rng.AddComment With Rng.Comment .Visible=False .Text Text:=WorksheetFunction.Text(Date, "YYYY-MM-DD") .Shape.TextFrame.AutoSize=True End With End If Next End Sub
[4] 關(guān)閉VBE窗口返回到工作表。
[5] 選中單元格區(qū)域C3∶D9,然后利用快捷鍵Alt+F8調(diào)出運(yùn)行宏窗口,然后單擊“執(zhí)行”按鈕。

圖2.68 待添加批注數(shù)據(jù)

圖2.69 批量添加批注后的數(shù)據(jù)
提示
本實(shí)例參見(jiàn)光盤樣本:..\第2部分\實(shí)例66.xlsm。
實(shí)例67 批量刪除批注
【技巧說(shuō)明】 批量刪除選區(qū)內(nèi)的批注。
【案例介紹】 以實(shí)例66數(shù)據(jù)為例,將實(shí)例66在區(qū)域中添加的批注一次性刪除。
【案例實(shí)現(xiàn)】 參見(jiàn)以下步驟:
[1] 使用快捷鍵Alt+F11進(jìn)入VBE(Visual Basic Editor)環(huán)境。
[2] 單擊菜單【插入】\【模塊】,打開(kāi)模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub批量刪除批注() For Each Rng In Selection Rng.ClearComments Next End Sub
[4] 關(guān)閉VBE窗口返回到工作表。
[5] 選中單元格區(qū)域C3∶D9,然后利用快捷鍵Alt+F8調(diào)出運(yùn)行宏窗口,單擊“執(zhí)行”按鈕,選區(qū)的批注將瞬間刪除。
提示
本實(shí)例參見(jiàn)光盤樣本:..\第2部分\實(shí)例67.xlsm
【相關(guān)知識(shí)說(shuō)明】
ClearComments:刪除區(qū)域中的批注。
實(shí)例68 為指定列數(shù)據(jù)添加批注
【技巧說(shuō)明】 為指定列數(shù)據(jù)添加批注。
【案例介紹】 如圖2.70所示,社保人員列表中無(wú)“工號(hào)”列,現(xiàn)需要鼠標(biāo)指向姓名時(shí)顯示員工工號(hào)。
【案例實(shí)現(xiàn)】 參見(jiàn)以下步驟:
[1] 使用快捷鍵Alt+F11進(jìn)入VBE(Visual Basic Editor)環(huán)境。
[2] 單擊菜單【插入】\【模塊】,打開(kāi)模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub批量添加批注() For Each Rng In Selection If Rng <> "" Then Rng.AddComment With Rng.Comment .Visible=False .Text Text:="此員工號(hào):"&WorksheetFunction.VLookup(Rng,Range("I2:J47"),2,0) .Shape.TextFrame.AutoSize=True End With End If Next End Sub
[4] 關(guān)閉VBE窗口返回到工作表。
[5] 選中單元格區(qū)域B3∶B10,然后利用快捷鍵Alt+F8調(diào)出運(yùn)行宏窗口,單擊“執(zhí)行”按鈕,選區(qū)中員工姓名處自動(dòng)添加其工號(hào),工號(hào)與員工工號(hào)表中一致,如圖2.71所示。

圖2.70 待添加工號(hào)數(shù)據(jù)表

圖2.71 已添加工號(hào)批注的數(shù)據(jù)表
提示
1.本實(shí)例參見(jiàn)光盤樣本:..\第2部分\實(shí)例68.xlsm。
2.單元格中已有批注時(shí)不可用AddComment方法再添加批注,否則會(huì)出錯(cuò)。
【相關(guān)知識(shí)說(shuō)明】
VLookup:在表格數(shù)組的首列查找值,并由此返回表格數(shù)組當(dāng)前行中其他列的值。
實(shí)例69 添加圖片背景批注
【技巧說(shuō)明】 添加批注框背景為圖片的批注。
【案例介紹】 人事資料表(見(jiàn)圖2.72)直接存放員工照片將使工作表顯得不美觀,可以將照片存在批注中,鼠標(biāo)移過(guò)時(shí)可以查看。

圖2.72 待加照片的人事資料表
【案例實(shí)現(xiàn)】 參見(jiàn)以下步驟:
[1] 使用快捷鍵Alt+F11進(jìn)入VBE(Visual Basic Editor)環(huán)境。
[2] 單擊菜單【插入】\【模塊】,打開(kāi)模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub插入圖片標(biāo)注() Dim pizhu, pic As String Set pizhu=ActiveCell.Comment If Not pizhu Is Nothing Then ActiveCell.Comment.Delete '已有批注則刪除批注 Set pizhu=Nothing '釋放變量 pic=Application.GetOpenFilename(ImgFileformat) '提取圖片文件 If pic="False" Then End '選擇取消則退出程序 With ActiveCell .AddComment '添加批注 .Comment.Visible=False '批注不可見(jiàn) .Comment.Shape.Fill.Transparency=0# '批注不透明 .Comment.Shape.Fill.UserPicture pic '填充圖片 .Comment.Shape.LockAspectRatio=msoTrue '設(shè)定圖片透明度 .Comment.Shape.Height=30# '設(shè)定批注高度為30 End With ActiveCell.Select '設(shè)置圖片比例,高與寬之比為3∶4 ActiveCell.Comment.Shape.ScaleWidth 3, msoFalse, msoScaleFromTopLeft ActiveCell.Comment.Shape.ScaleHeight 4, msoFalse, msoScaleFromTopLeft End Sub
[4] 關(guān)閉VBE窗口返回到工作表。
[5] 選中單元格A3,利用快捷鍵Alt+F8調(diào)出運(yùn)行宏窗口,然后單擊“執(zhí)行”按鈕,將彈出“請(qǐng)選擇員工照片”對(duì)話框,如圖2.73所示。
[6] 選擇照片,并單擊“確定”按鈕返回工作表,單元格A3即已完成圖片批注的插入,如圖2.74所示。

圖2.73 “請(qǐng)選擇員工照片”對(duì)話框

圖2.74 圖片背景的批注
提示
本實(shí)例參見(jiàn)光盤樣本:..\第2部分\實(shí)例69.xlsm。
【相關(guān)知識(shí)說(shuō)明】
GetOpenFilename:顯示標(biāo)準(zhǔn)的“打開(kāi)”對(duì)話框,并獲取用戶文件名。語(yǔ)法如下:
表達(dá)式.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
各參數(shù)含義見(jiàn)表2.5。
表2.5 GetOpenFilename參數(shù)列表

實(shí)例70 添加個(gè)性化批注
【技巧說(shuō)明】 添加邊框更具個(gè)性化的批注。
【案例介紹】 為單元格添加批注,其邊框不限于常規(guī)的四方形。
【案例實(shí)現(xiàn)】 參見(jiàn)以下步驟:
[1] 使用快捷鍵Alt+F11進(jìn)入VBE(Visual Basic Editor)環(huán)境。
[2] 單擊菜單【插入】\【模塊】,打開(kāi)模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub添加個(gè)性化批注() Dim mystr As String, mystr2 As String, Comment ActiveCell.ClearComments mystr=InputBox("輸入批注內(nèi)容", "批注", Application.UserName, 10, 10) mystr2=InputBox("輸入批注外型" & Chr(10) & "1為口哨型,2為書卷型,3為箭頭型" _ & Chr(10) & "4為圓角矩形,5為缺角矩形,6為菱型,7為五角星.", "批注外型", 1, 10, 10) If mystr <> "" And mystr2 <> "" Then Set Comment=ActiveCell.AddComment With Comment .Visible=False .Text Text:=mystr .Visible=True .Shape.Select End With With Selection.ShapeRange If mystr2=1 Then .AutoShapeType= msoShapeFlowchartSequential AccessStorage If mystr2=2 Then .AutoShapeType=msoShapeFoldedCorner If mystr2=3 Then .AutoShapeType=msoShapeRightArrow If mystr2=4 Then .AutoShapeType= msoShapeRoundedRectangular Callout If mystr2=5 Then .AutoShapeType=msoShapePlaque If mystr2=6 Then .AutoShapeType=msoShapeDiamond If mystr2=7 Then .AutoShapeType=msoShape5pointStar End With ActiveCell.Select: Exit Sub End If End Sub
[4] 關(guān)閉VBE窗口返回到工作表。
[5] 選中任意單元格,然后利用快捷鍵Alt+F8調(diào)出運(yùn)行宏窗口,單擊“執(zhí)行”按鈕,將彈出輸入批注內(nèi)容對(duì)話框,如圖2.75所示。
[6] 輸入內(nèi)容后再?gòu)棾鲞x擇批注外型的對(duì)話框,可以根據(jù)提示輸入相應(yīng)的數(shù)字編號(hào),如圖2.76所示。

圖2.75 輸入批注內(nèi)容

圖2.76 選擇批注外型
[7] 選擇外型編號(hào)并確定后,單元格將產(chǎn)生對(duì)應(yīng)外型的批注,如圖2.77所示。

圖2.77 生成個(gè)性化的批注
提示
本實(shí)例參見(jiàn)光盤樣本:..\第2部分\實(shí)例70.xlsm。
【相關(guān)知識(shí)說(shuō)明】
ShapeRange.AutoShapeType:返回或設(shè)置指定的Shape或ShapeRange對(duì)象的形狀類型,該對(duì)象必須代表自選圖形,而不能代表直線、任意多邊形或連接符,可以用名稱表示類型,也可以使用數(shù)值。AutoShapType類型表(名稱和數(shù)值的對(duì)應(yīng)關(guān)系)見(jiàn)表2.6。
表2.6 AutoShapeType類型表

續(xù)表

續(xù)表

續(xù)表

實(shí)例71 批量修改批注外觀
【技巧說(shuō)明】 批量修改批注外觀。
【案例介紹】 一次性修改選區(qū)中所有批注的外觀樣式。
【案例實(shí)現(xiàn)】 參見(jiàn)以下步驟:
[1] 使用快捷鍵Alt+F11進(jìn)入VBE(Visual Basic Editor)環(huán)境。
[2] 單擊菜單【插入】\【模塊】,打開(kāi)模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub批量修改批注外型() Dim i As Integer, cell As Range, mystr As String If TypeName(Selection) <> "Range" Then MsgBox "請(qǐng)選擇單元格!", 64, " 【友情提示】": Exit Sub '未選中單元格則退出 On Error GoTo err '排錯(cuò),當(dāng)工作表中沒(méi)有批注時(shí)會(huì)出錯(cuò) mystr=InputBox("輸入批注外型" & Chr(10) & "1為口哨型,2為書卷型,3為箭頭型" _ & Chr(10) & "4為圓角矩形,5為缺角矩形,6為菱型,7為五角星.", "批注外型", 1, 10, 10) Application.ScreenUpdating=False For Each cell In Selection If Not Application.Intersect(cell, Cells.SpecialCells(xlCellTypeComments)) Is Nothing Then With cell.Comment .Visible=True .Shape.Select True End With With Selection.ShapeRange If mystr=1 Then .AutoShapeType=msoShapeFlowchartSequentialAccessStorage If mystr=2 Then .AutoShapeType=msoShapeFoldedCorner If mystr=3 Then .AutoShapeType=msoShapeRightArrow If mystr=4 Then .AutoShapeType=msoShapeRoundedRectangularCallout If mystr=5 Then .AutoShapeType=msoShapePlaque If mystr=6 Then .AutoShapeType=msoShapeDiamond If mystr=7 Then .AutoShapeType=msoShape5pointStar cell.Comment.Visible=False End With Else i=i+1 End If Next Application.ScreenUpdating=True If i=Selection.Count Then MsgBox "選區(qū)中沒(méi)有批注!", 64, "提示" ActiveCell.Select: Exit Sub err: MsgBox "本工作表中沒(méi)有批注!", 64, "提示" End Sub
[4] 關(guān)閉VBE窗口返回到工作表。
[5] 選中任意區(qū)域,然后利用快捷鍵Alt+F8調(diào)出運(yùn)行宏窗口,單擊“執(zhí)行”按鈕,程序彈出輸入對(duì)話框等待輸入新批注樣式編號(hào)(對(duì)話框和實(shí)例70中圖2.76一樣)。
[6] 在對(duì)話框中輸入批注編號(hào)后,如果工作表中沒(méi)有批注,則彈出提示如圖2.78所示;如果工作表中有批注,但選區(qū)中沒(méi)有批注,則彈出提示如圖7.79所示。如果選區(qū)中有批注,則程序一次性將所有批注的樣式修改為用戶指定的樣式。

圖2.78 工作表中無(wú)批注的提示

圖2.79 選區(qū)中無(wú)批注的提示
提示
本實(shí)例參見(jiàn)光盤樣本:..\第2部分\實(shí)例71.xlsm。
實(shí)例72 為公式添加標(biāo)注
【技巧說(shuō)明】 為公式添加標(biāo)注。
【案例介紹】 只要單元格格式不是文本,公式都會(huì)顯示出最后結(jié)果,而非公式本身。本例將公式添加到批注中,指向單元格時(shí)就提示單元格公式。
【案例實(shí)現(xiàn)】 參見(jiàn)以下步驟:
[1] 使用快捷鍵Alt+F11進(jìn)入VBE(Visual Basic Editor)環(huán)境。
[2] 單擊菜單【插入】\【模塊】,打開(kāi)模塊代碼窗口。
[3] 在右邊代碼窗口輸入以下代碼:
Sub為公式添加標(biāo)注() On Error GoTo endd Set Rng=Selection.Cells.SpecialCells(xlCellTypeFormulas) For Each cell In Rng cell.ClearComments With cell.AddComment .Text Text:=cell.Formula With .Shape .TextFrame.AutoSize=True .Fill.ForeColor.SchemeColor=44 .AutoShapeType=msoShapePlaque If Len(cell.Formula) > 50 And Len(cell.Formula) < 100 Then .Width=300 .Height=32 ElseIf Len(cell.Formula)>=100 And Len(cell.Formula)<150 Then .Width=300 .Height=48 ElseIf Len(cell.Formula)>=150 And Len(cell.Formula)<300 Then .Width=300 .Height=95 ElseIf Len(cell.Formula)>=300 And Len(cell.Formula)<1024 Then .Width=300 .Height=150 End If .Visible=False End With End With Next cell endd: End Sub
[4] 關(guān)閉VBE窗口返回到工作表。
[5] 選中單元格區(qū)域A1∶C8,然后利用快捷鍵Alt+F8調(diào)出運(yùn)行宏窗口,并單擊“執(zhí)行”按鈕,所有公式的單元格都已建立批注,其余單元格忽略,如圖2.80所示。

圖2.80 為公式添加批注
提示
本實(shí)例參見(jiàn)光盤樣本:..\第2部分\實(shí)例72.xlsm。
【相關(guān)知識(shí)說(shuō)明】
(1)Cells.SpecialCells(xlCellTypeFormulas):表示有公式的單元格。
(2)Shape:代表繪圖層中的對(duì)象,如自選圖形、任意多邊形、OLE對(duì)象或圖片。本例中用Shape.Width和Shape.Heigh來(lái)設(shè)置圖形的寬和高。注意批注框也是一種圖形對(duì)象。
- 完全掌握Office 2010高效辦公超級(jí)手冊(cè)
- 新編Office 2013從入門到精通
- Word/Excel/PPT 商務(wù)辦公效率手冊(cè):從小白到辦公大神
- Excel高效辦公:公司表格設(shè)計(jì)(修訂版)
- Excel效率手冊(cè):早做完,不加班 ( 精華版·函數(shù)篇)(升級(jí)版)
- PPT多媒體課件制作從新手到高手
- Excel技術(shù)與應(yīng)用大全
- Flash CS6核心應(yīng)用案例教程(全彩慕課版)
- 圖表之美:打造優(yōu)秀的Excel圖表
- 電腦辦公從入門到精通
- PowerPoint 2016高級(jí)應(yīng)用案例教程
- WPS Office 2019高級(jí)應(yīng)用案例教程
- Excel 2007 VBA高級(jí)編程寶典
- Android智能穿戴設(shè)備開(kāi)發(fā)實(shí)戰(zhàn)詳解
- PowerPoint 2010辦公應(yīng)用實(shí)戰(zhàn)從入門到精通(超值版)