
VBA
Change事件来间接实现,因为当批注内容被修改后,通常会触发这个事件。
以下是一个示例代码,它会在工作表的某个单元格内容改变后,自动调整该单元格的批注框大小,并确保批注框的右边界不超过设定的最大值。这里假设我们只关心批注内容的变化,而不是直接的编辑状态变化。
<code>VBA<br/>Private Sub Worksheet_Change(ByVal Target As Range) Dim comment As Comment Dim maxWidth As Single ' 设定批注框的最大宽度,单位是点(1英寸 = 72点) maxWidth = 200 ' 检查目标单元格是否有批注 If Not Target.Comment Is Nothing Then Set comment = Target.Comment ' 改变批注框大小以适应内容 comment.Shape.TextFrame.AutoSize = True ' 检查并调整批注框的宽度,使其不超过maxWidth If comment.Shape.Width > maxWidth Then comment.Shape.Width = maxWidth End If ' 调整批注框的位置,确保它不超过工作表的最大宽度 If comment.Shape.Left + comment.Shape.Width > Me.UsedRange.Columns.Left + Me.UsedRange.Columns.Width Then comment.Shape.Left = Me.UsedRange.Columns.Left + Me.UsedRange.Columns.Width - comment.Shape.Width End If End If End Sub</code>这段代码需要放在包含批注的目标工作表的代码模块中。你可以通过按
Alt + F11 打开VBA编辑器,然后在项目资源管理器中找到你的工作表对象,双击进入代码窗口,将上述代码粘贴进去。
请注意,这段代码会在你改变工作表中任何单元格的内容时触发,因此如果你的工作表有很多单元格,可能会影响性能。你可以通过修改Target的范围来限制只有特定的单元格触发这个事件。

移动
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号