在 Excel VBA 中,您可以使用 Range 对象的 AddComment 方法为单元格添加批注。
添加批注
以下示例在单元格 A1 添加一个批注,批注内容为 "Excel VBA 教程",且隐藏批注。
Sub AddCommentToCell()
Dim cell As Range
' 设置要添加批注的单元格
Set cell = Range("A1")
' 检查单元格是否已有批注,如果没有则添加批注
If cell.Comment Is Nothing Then
' 添加新的批注
cell.AddComment "Excel VBA 教程"
' 设置批注的可见性为隐藏
cell.Comment.Visible = False
End If
End Sub
编辑批注
使用 Comment 对象的 Text 方法,能够获取或修改单元格批注的文本。
Sub EditComment()
' 设置要修改批注的单元格
With Range("A2")
' 检查单元格是否已有批注,如果有则
If Not .Comment Is Nothing Then
' 在对话框中显示批注内容
MsgBox .Comment.Text
' 更改批注内容
.Comment.Text Text:="果果云课堂"
End If
End With
End Sub
Comment.Text 方法
语法
Comment.Text (Text, Start, Overwrite)
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Text | 可选 | Variant | 要添加的文本。 |
Start | 可选 | Variant | 所添加文本的起始位置(字符数)。如果省略此参数,则删除批注中的所有现有文字。 |
Overwrite | 可选 | Variant | 如果为 False ,则插入文本。默认值为 True ,(文本被覆盖) 。 |
返回值
String
示例
以下示例代码将单元格 A2 的批注文本另起一行再添加 A2 单元格中的内容到批注文本。
Sub CommentText()
With Range("A2").Comment
.Text Text:=VBA.vbCrLf & Range("A2").Value, Start:=Len(.Text) + 1
End With
End Sub
修改批注外观
在默认情况下,批注的外观是一个矩形框,Comment.Shape 属性返回一个 Shape 对象,该对象代表附加到指定批注的形状,通过设置 Shape 对象的 AutoShapeType 属性可以修改批注的外观。
以下示例代码将单元格 A2 的批注外观改为一个圆角矩形:
Sub ChangeCommentShapeType()
Range("A2").Comment.Shape.AutoShapeType = msoShapeRoundedRectangle
End Sub
以下示例代码将单元格 A2 的批注外观恢复为一个直角矩形:
Sub RestoreCommentShapeType()
Range("A2").Comment.Shape.AutoShapeType = 1 'msoShapeRectangle
End Sub
MsoAutoShapeType 常量
MsoAutoShapeType 常量指定 AutoShape 对象的形状类型。
名称 | 值 | 描述 |
---|---|---|
msoShape10pointStar | 149 | 10 磅星 |
msoShape12pointStar | 150 | 12 磅星 |
msoShape16pointStar | 94 | 16 磅星 |
msoShape24pointStar | 95 | 24 磅星 |
msoShape32pointStar | 96 | 32 磅星 |
msoShape4pointStar | 91 | 4 磅星 |
msoShape5pointStar | 92 | 5 磅星 |
msoShape6pointStar | 147 | 6 磅星 |
msoShape7pointStar | 148 | 7 磅星 |
msoShape8pointStar | 93 | 8 磅星 |
msoShapeActionButtonBackorPrevious | 129 | “后退”或“上一个”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonBeginning | 131 | “开始”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonCustom | 125 | 不带默认图片或文本的按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonDocument | 134 | “文档”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonEnd | 132 | “结束”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonForwardorNext | 130 | “前进”或“下一个”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonHelp | 127 | 帮助按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonHome | 126 | “主页”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonInformation | 128 | “信息”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonMovie | 136 | “影片”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonReturn | 133 | “返回”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeActionButtonSound | 135 | “声音”按钮。支持鼠标单击和鼠标移过操作。 |
msoShapeArc | 25 | 弧 |
msoShapeBalloon | 137 | 气球 |
msoShapeBentArrow | 41 | 带 90 度圆角的箭头。 |
msoShapeBentUpArrow | 44 | 带 90 度直角的箭头。默认情况下上指。 |
msoShapeBevel | 15 | 棱台效果 |
msoShapeBlockArc | 20 | 块弧 |
msoShapeCan | 13 | 罐 |
msoShapeChartPlus | 182 | 正方形垂直和水平分为四个季度 |
msoShapeChartStar | 181 | 正方形沿垂直线和对角线分为六个部分 |
msoShapeChartX | 180 | 正方形沿对角线分为四部分 |
msoShapeChevron | 52 | 雪佛龙 |
msoShapeChord | 161 | 圆圈,用一条线连接两个点的外围通过圆的内部;带和弦的圆 |
msoShapeCircularArrow | 60 | 曲线 180 度角后面的方块箭头 |
msoShapeCloud | 179 | 云形状 |
msoShapeCloudCallout | 108 | 云标注 |
msoShapeCorner | 162 | 带矩形孔的矩形。 |
msoShapeCornerTabs | 169 | 沿矩形路径对齐的四个右三角形;四个“被砍”的角落。 |
msoShapeCross | 11 | 十字形 |
msoShapeCube | 14 | 立方体 |
msoShapeCurvedDownArrow | 48 | 向下弯曲的方块箭头 |
msoShapeCurvedDownRibbon | 100 | 向下弯曲的功能区横幅 |
msoShapeCurvedLeftArrow | 46 | 向左弯曲的方块箭头 |
msoShapeCurvedRightArrow | 45 | 向右弯曲的方块箭头 |
msoShapeCurvedUpArrow | 47 | 向上弯曲的方块箭头 |
msoShapeCurvedUpRibbon | 99 | 向上弯曲的功能区横幅 |
msoShapeDecagon | 144 | 十边形 |
msoShapeDiagonalStripe | 141 | 删除了两个三角形形状的矩形;对角线 |
msoShapeDiamond | 4 | 菱形 |
msoShapeDodecagon | 146 | 十二边形 |
msoShapeDonut | 18 | 甜甜圈 |
msoShapeDoubleBrace | 27 | 双大括号 |
msoShapeDoubleBracket | 26 | 双括号 |
msoShapeDoubleWave | 104 | 双波 |
msoShapeDownArrow | 36 | 向下指向的块箭头 |
msoShapeDownArrowCallout | 56 | 带有向下箭头的标注 |
msoShapeDownRibbon | 98 | 功能区下中心区域位于功能区末端的功能区横幅 |
msoShapeExplosion1 | 89 | 爆炸 |
msoShapeExplosion2 | 90 | 爆炸 |
msoShapeFlowchartAlternateProcess | 62 | 备用流程图符号 |
msoShapeFlowchartCard | 75 | 卡片流程图符号 |
msoShapeFlowchartCollate | 79 | 排序规则流程图符号 |
msoShapeFlowchartConnector | 73 | 连接器流程图符号 |
msoShapeFlowchartData | 64 | 数据流程图符号 |
msoShapeFlowchartDecision | 63 | 决策流程图符号 |
msoShapeFlowchartDelay | 84 | 延迟流程图符号 |
msoShapeFlowchartDirectAccessStorage | 87 | 直接访问存储流程图符号 |
msoShapeFlowchartDisplay | 88 | 显示流程图符号 |
msoShapeFlowchartDocument | 67 | 文档流程图符号 |
msoShapeFlowchartExtract | 81 | 提取流程图符号 |
msoShapeFlowchartInternalStorage | 66 | 内部存储流程图符号 |
msoShapeFlowchartMagneticDisk | 86 | 磁盘流程图符号 |
msoShapeFlowchartManualInput | 71 | 手动输入流程图符号 |
msoShapeFlowchartManualOperation | 72 | 手动操作流程图符号 |
msoShapeFlowchartMerge | 82 | 合并流程图符号 |
msoShapeFlowchartMultidocument | 68 | 多文档流程图符号 |
msoShapeFlowchartOfflineStorage | 139 | 脱机存储流程图符号 |
msoShapeFlowchartOffpageConnector | 74 | 页外连接器流程图符号 |
msoShapeFlowchartOr | 78 | “Or”流程图符号 |
msoShapeFlowchartPredefinedProcess | 65 | 预定义流程图符号 |
msoShapeFlowchartPreparation | 70 | 准备流程图符号 |
msoShapeFlowchartProcess | 61 | 流程图符号 |
msoShapeFlowchartPunchedTape | 76 | 打孔磁带流程图符号 |
msoShapeFlowchartSequentialAccessStorage | 85 | 顺序访问存储流程图符号 |
msoShapeFlowchartSort | 80 | 排序流程图符号 |
msoShapeFlowchartStoredData | 83 | 存储的数据流程图符号 |
msoShapeFlowchartSummingJunction | 77 | 求和交汇点流程图符号 |
msoShapeFlowchartTerminator | 69 | 终止符流程图符号 |
msoShapeFoldedCorner | 16 | 折叠角 |
msoShapeFrame | 158 | 矩形相框 |
msoShapeFunnel | 174 | 漏斗 |
msoShapeGear6 | 172 | 带六颗牙齿的齿轮 |
msoShapeGear9 | 173 | 带九颗牙齿的齿轮 |
msoShapeHalfFrame | 159 | 矩形相框的一半 |
msoShapeHeart | 21 | 心形 |
msoShapeHeptagon | 145 | 七边形 |
msoShapeHexagon | 10 | 六边形 |
msoShapeHorizontalScroll | 102 | 水平滚动 |
msoShapeIsoscelesTriangle | 7 | 等腰三角形 |
msoShapeLeftArrow | 34 | 向左指向的块箭头 |
msoShapeLeftArrowCallout | 54 | 带有向左箭头的标注 |
msoShapeLeftBrace | 31 | 左大括号 |
msoShapeLeftBracket | 29 | 左括号 |
msoShapeLeftCircularArrow | 176 | 指向逆时针的圆形箭头 |
msoShapeLeftRightArrow | 37 | 带向左和向右箭头的块箭头 |
msoShapeLeftRightArrowCallout | 57 | 带有向左和向右箭头的标注 |
msoShapeLeftRightCircularArrow | 177 | 指向顺时针和逆时针的圆形箭头;两端有点的曲线箭头 |
msoShapeLeftRightRibbon | 140 | 两端都有箭头的功能区 |
msoShapeLeftRightUpArrow | 40 | 带向左、向右和向上的箭头的块箭头 |
msoShapeLeftUpArrow | 43 | 带向左和向上箭头的块箭头 |
msoShapeLightningBolt | 22 | 闪电 |
msoShapeLineCallout1 | 109 | 带边框和水平标注线的标注 |
msoShapeLineCallout1AccentBar | 113 | 带水平强调线的标注 |
msoShapeLineCallout1BorderandAccentBar | 121 | 带边框和水平强调线的标注 |
msoShapeLineCallout1NoBorder | 117 | 带水平线的标注 |
msoShapeLineCallout2 | 110 | 带对角线直线的标注 |
msoShapeLineCallout2AccentBar | 114 | 带对角线标注线和强调线的标注 |
msoShapeLineCallout2BorderandAccentBar | 122 | 带有边框、对角线和强调线的标注 |
msoShapeLineCallout2NoBorder | 118 | 无边框和对角标注线的标注 |
msoShapeLineCallout3 | 111 | 带角度线的标注 |
msoShapeLineCallout3AccentBar | 115 | 带角度标注线和强调线的标注 |
msoShapeLineCallout3BorderandAccentBar | 123 | 带边框、角度标注线和强调线的标注 |
msoShapeLineCallout3NoBorder | 119 | 无边框和带角度标注线的标注 |
msoShapeLineCallout4 | 112 | 带有形成 U 形的标注线段的标注 |
msoShapeLineCallout4AccentBar | 116 | 带有强调线和标注线段的标注,形成 U 形 |
msoShapeLineCallout4BorderandAccentBar | 124 | 带有构成 U 形的边框、强调线和标注线段的标注 |
msoShapeLineCallout4NoBorder | 120 | 没有边框的标注和形成 U 形的标注线段 |
msoShapeLineInverse | 183 | 行反 |
msoShapeMathDivide | 166 | 除法符号 ÷ |
msoShapeMathEqual | 167 | 等效符号 = |
msoShapeMathMinus | 164 | 减法符号 - |
msoShapeMathMultiply | 165 | 乘法符号 x |
msoShapeMathNotEqual | 168 | 非等效符号 ≠ |
msoShapeMathPlus | 163 | 加法符号 + |
msoShapeMixed | -2 | 只返回值,表示其他状态的组合。 |
msoShapeMoon | 24 | 月亮 |
msoShapeNonIsoscelesTrapezoid | 143 | 具有非对称非并行侧的梯形 |
msoShapeNoSymbol | 19 | “No”符号 |
msoShapeNotchedRightArrow | 50 | 向右指向的凹槽块箭头 |
msoShapeNotPrimitive | 138 | 不支持 |
msoShapeOctagon | 6 | 八角形 |
msoShapeOval | 9 | 椭圆形 |
msoShapeOvalCallout | 107 | 椭圆形标注 |
msoShapeParallelogram | 2 | 平行四边形 |
msoShapePentagon | 51 | 五角大楼 |
msoShapePie | 142 | 缺少部分的圆形 (“pie”) |
msoShapePieWedge | 175 | 圆形的四分之一 |
msoShapePlaque | 28 | 斑块 |
msoShapePlaqueTabs | 171 | 定义矩形形状的四个四分之一圆 |
msoShapeQuadArrow | 39 | 指向向上、向下、向左和向右的块箭头 |
msoShapeQuadArrowCallout | 59 | 带有指向向上、向下、向左和向右的箭头的标注 |
msoShapeRectangle | 1 | 矩形 |
msoShapeRectangularCallout | 105 | 矩形标注 |
msoShapeRegularPentagon | 12 | 五角大楼 |
msoShapeRightArrow | 33 | 向右指向的方块箭头 |
msoShapeRightArrowCallout | 53 | 带有向右箭头的标注 |
msoShapeRightBrace | 32 | 右大括号 |
msoShapeRightBracket | 30 | 右括号 |
msoShapeRightTriangle | 8 | 右三角形 |
msoShapeRound1Rectangle | 151 | 带一个圆角的矩形 |
msoShapeRound2DiagRectangle | 157 | 具有两个圆角的矩形,对角线对角 |
msoShapeRound2SameRectangle | 152 | 具有共享一侧的两个圆角的矩形 |
msoShapeRoundedRectangle | 5 | 圆角矩形 |
msoShapeRoundedRectangularCallout | 106 | 圆角矩形标注 |
msoShapeSmileyFace | 17 | 笑脸 |
msoShapeSnip1Rectangle | 155 | 具有一个夹角的矩形 |
msoShapeSnip2DiagRectangle | 157 | 具有两个斜角的矩形,对角线对角 |
msoShapeSnip2SameRectangle | 156 | 具有共享一侧的两个夹角的矩形 |
msoShapeSnipRoundRectangle | 154 | 具有一个剪切角和一个圆角的矩形 |
msoShapeSquareTabs | 170 | 定义矩形形状的四个小正方形 |
msoShapeStripedRightArrow | 49 | 向右指的方块箭头,尾部有条纹 |
msoShapeSun | 23 | 太阳 |
msoShapeSwooshArrow | 178 | 曲线箭头 |
msoShapeTear | 160 | 水滴 |
msoShapeTrapezoid | 3 | 梯形 |
msoShapeUpArrow | 35 | 向上指向的块箭头 |
msoShapeUpArrowCallout | 55 | 带向上箭头的标注 |
msoShapeUpDownArrow | 38 | 向上和向下指向的块箭头 |
msoShapeUpDownArrowCallout | 58 | 带有向上和向下箭头的标注 |
msoShapeUpRibbon | 97 | 功能区两端中心区域上方的功能区横幅 |
msoShapeUTurnArrow | 42 | 形成 U 形状的块箭头 |
msoShapeVerticalScroll | 101 | 垂直滚动 |
msoShapeWave | 103 | 海浪 |
添加图片批注
我们还可以为单元格批注添加背景图片或者直接将图片作为批注的内容。
以下示例代码如下将当前工作簿所在文件夹中的图片“Panda.jpg”作为单元格 A2 批注的背景图片。
Sub FillCommentPictureShape()
With Range("A2").Comment
.Shape.Fill.UserPicture ThisWorkbook.path & "\Panda.jpg"
End With
End Sub
Shape 对象的 Fill 属性能够返回 FillFormat 对象,该对象包含指定的图表或图形的填充格式属性,FillFormat 对象的 UserPicture 方法为形状填充图像,其语法格式如下:
UserPicture (PictureFile)
其中,参数 PictureFile 指定要填充的图片文件的文件路径,或者图片文件的名称(如果当前存在指向图片文件的链接)。
清除批注填充
以下代码清除单元格 A2 中的批注填充效果,保留文字填充:
Sub ClearCellCommentFill()
With Range("A2").Comment
' 清除批注的填充
.Shape.Fill.Visible = msoFalse
End With
End Sub
设置批注字体
通过单元格批注的 Shape 对象中的 TextFrame 对象(文本框对象)的 Characters 对象(字符对象)进行批注的字体设置。
以下示例代码设置活动工作表中所有批注的字符格式,字体为仿宋,加粗,字号为14号,字体颜色为黑色:
Sub CommentFont()
Dim objComment As Comment
For Each objComment In ActiveSheet.Comments
With objComment.Shape.TextFrame.Characters.Font
.Name = "仿宋" ' 设置字体为仿宋
.Bold = True ' 设置字体为粗体
.Size = 14 ' 设置字号为14
.Color = RGB(0, 0, 0) ' 设置字体颜色为黑色
End With
Next objComment
Set objComment = Nothing
End Sub