使用 VBA 在可滚动列表中生成包含单元格内容的评论
Generate comments containing cell content in a scrollable list with VBA
我在 excel 中创建了一个可滚动列表(使用 ActiveX 滚动条和 OFFSET 方法)。我的目标是为此列表中的每个单元格生成一条评论。每个评论都应该包含它所附加的单元格的确切内容。我将使用我为其分配代码的按钮生成评论。我首先单击按钮(生成评论),然后滚动滚动条。我想要的是滚动滚动条后,我不必再次单击按钮。换句话说,在我滚动之后,我希望评论能够自动调整。这就是说,我有一个问题。尽管我能够为静态项目生成评论,但每当我在列表中向上或向下滚动时,评论都不会更新(即,如果为单元格 C5 生成的评论是 "Hello World",当我向下滚动单元格的评论时即使单元格 C5 的内容已更改,C5 仍将是 "Hello World")。这是我到目前为止的代码:
Private Sub Create_Comments()
'src refers to the cells for which we will generate comments
Dim src As Range: Set src = Range("C5:C14")
'tar refers to the cells where the comments will be generated
Dim tar As Range: Set tar = Range("C5:C14")
For i = 0 To src.Rows.Count - 1
Dim sResult As String
sResult = Cells(src.Row + i, src.Column)
If sResult <> "" Then
With Cells(tar.Row + i, tar.Column)
.ClearComments
.AddComment
.Comment.Text Text:=sResult
.Comment.Shape.ScaleWidth 4, msoFalse, msoScaleFromTopLeft
.Comment.Shape.ScaleHeight 2.26, msoFalse,soScaleFromTopLeft
End With
Else: sResult = ""
Exit Sub
End If
Next i
End Sub
如果能深入了解为什么这不能按预期工作,我们将不胜感激!我正在使用 Excel 2007.
谢谢!
为了在每次更改滚动条时更新注释,您需要将 Create_Comments
宏分配给滚动条(如果是标准表单控件),或者从 ScrollBar_Change
调用它事件(如果是 ActiveX 滚动条)。
请注意,您可能需要在更新 Create_Comments
中的评论之前调用 Application.Calculate
或 Worksheet.Calculate
,以确保在创建评论之前更新单元格。
我在 excel 中创建了一个可滚动列表(使用 ActiveX 滚动条和 OFFSET 方法)。我的目标是为此列表中的每个单元格生成一条评论。每个评论都应该包含它所附加的单元格的确切内容。我将使用我为其分配代码的按钮生成评论。我首先单击按钮(生成评论),然后滚动滚动条。我想要的是滚动滚动条后,我不必再次单击按钮。换句话说,在我滚动之后,我希望评论能够自动调整。这就是说,我有一个问题。尽管我能够为静态项目生成评论,但每当我在列表中向上或向下滚动时,评论都不会更新(即,如果为单元格 C5 生成的评论是 "Hello World",当我向下滚动单元格的评论时即使单元格 C5 的内容已更改,C5 仍将是 "Hello World")。这是我到目前为止的代码:
Private Sub Create_Comments()
'src refers to the cells for which we will generate comments
Dim src As Range: Set src = Range("C5:C14")
'tar refers to the cells where the comments will be generated
Dim tar As Range: Set tar = Range("C5:C14")
For i = 0 To src.Rows.Count - 1
Dim sResult As String
sResult = Cells(src.Row + i, src.Column)
If sResult <> "" Then
With Cells(tar.Row + i, tar.Column)
.ClearComments
.AddComment
.Comment.Text Text:=sResult
.Comment.Shape.ScaleWidth 4, msoFalse, msoScaleFromTopLeft
.Comment.Shape.ScaleHeight 2.26, msoFalse,soScaleFromTopLeft
End With
Else: sResult = ""
Exit Sub
End If
Next i
End Sub
如果能深入了解为什么这不能按预期工作,我们将不胜感激!我正在使用 Excel 2007.
谢谢!
为了在每次更改滚动条时更新注释,您需要将 Create_Comments
宏分配给滚动条(如果是标准表单控件),或者从 ScrollBar_Change
调用它事件(如果是 ActiveX 滚动条)。
请注意,您可能需要在更新 Create_Comments
中的评论之前调用 Application.Calculate
或 Worksheet.Calculate
,以确保在创建评论之前更新单元格。