宏在实践电子表格中工作,而不在其他工作表中(注释创建和事件触发器)

时间:2016-10-19 20:52:54

标签: excel vba excel-vba eventhandler

我有一个具有事件触发器的宏,当由单元格更改触发时,它会使用来自单独电子表格的第3个单元格中的文本在不同的单元格中创建注释。

实施例: 当单元格C7被更改时,我的整个电子表格都会更新(bloomberg n其他插件)。该更改会触发在Cell C9中创建一个注释框,其中包含来自Cell C14的文本(使用来自其他电子表格的vlookup进行拉取)。

我让宏在我用于练习目的的空白电子表格中完美地工作。问题是,一旦我将其复制到我需要它的电子表格中,它就不再显示文本了。

我使用msgbox进行错误检查,并且宏“正确执行”,但它将注释框留空。它甚至会将注释框的大小调整为我的宏,但不会拖动文本。如果我在更改单元格上单击F2 + Enter(C7以保持对我的示例),则会显示文本,但不会显示。

我不确定是否因为它需要暂时滞后其他单元格来获取信息或什么。我试过睡眠/等待和DoEvents但没有帮助。

我不知道如何进行循环(尝试和失败)所以我不确定是否会解决它,只需循环再次创建注释。除了这个宏,电子表格中只有一个其他的宏(全部刷新),所以我不相信这就是干扰。

代码发布在下面,任何提示或技巧将不胜感激。谢谢。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Target.Address = "$C$7" Then
DoEvents
 Worksheets("Sheet1").Range("C9").ClearComments
    With Worksheets("Sheet1").Range("C9").AddComment
        .Visible = False
        .Text "" & Range("C14")
    Set Target = Range("C9")
    Target.Comment.Shape.ScaleHeight 2, msoFalse
    Target.Comment.Shape.ScaleWidth 2, msoFalse
End With
End If
Application.EnableEvents = True
End Sub

如果有人想提出超出我要求的建议,我将不得不通过C7:L7循环这个评论创建和事件触发器,并从C14:L14拉出。这样,如果有人更改任何输入(第7行),则注释框将刷新该列。再次感谢你。

0 个答案:

没有答案