2017-03-09 23 views
0

我在Excel中创建一个滚动列表(使用ActiveX滚动条和OFFSET方法)。我的目标是为此列表中的每个单元格生成评论。每个评论应该包含它所连接的单元格的确切内容。我将使用我为其分配代码的按钮生成注释。我先点击按钮(它会生成评论),然后我滚动滚动条。我想要的是,在滚动滚动条后,我不必再次单击该按钮。换句话说,在我滚动后,我希望评论自动调整。这说,我有一个问题。虽然我能够为静态项目生成评论,但无论何时在列表中向上或向下滚动,评论都不会更新(即,如果为单元格C5生成的注释是“Hello World”,当我向下滚动单元格C5的注释时即使单元格C5的内容已更改,仍然会是“Hello World”)。这里是我到目前为止的代码:产生滚动列表包含单元格内容的评论与VBA

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.

谢谢!

+0

Create_Comments从哪里调用? – SteveES

+0

我只是将Create_Comments赋值给一个按钮。这样,我所要做的就是按下工作表上的按钮并运行代码。 – YesHelloThisIsDog

+0

1.只需确定 - 滚动滚动条,然后单击一个单独的按钮来更新评论? 2.为什么第二行代码是必需的? – SteveES

回答

0

为了在每次更换滚动条时更新注释,需要将Create_Comments宏指定给滚动条(如果是标准表单控件),或者从ScrollBar_Change事件(如果是ActiveX滚动条)调用该宏。

请注意,您可能需要更新才能在Create_Comments的意见,以确保创建的意见之前,细胞更新之前调用Application.CalculateWorksheet.Calculate

相关问题