官术网_书友最值得收藏!

第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ì)象。

主站蜘蛛池模板: 武功县| 隆安县| 绥滨县| 临城县| 微博| 普宁市| 荣成市| 双辽市| 新竹市| 鄱阳县| 天气| 获嘉县| 西乌珠穆沁旗| 柘城县| 潞城市| SHOW| 樟树市| 千阳县| 诸暨市| 盐亭县| 衡水市| 峨眉山市| 津市市| 吐鲁番市| 平凉市| 德化县| 柯坪县| 家居| 北川| 磴口县| 辽阳县| 南川市| 沙河市| 汪清县| 肇源县| 翁牛特旗| 佛冈县| 梁河县| 静海县| 开封市| 崇仁县|