【问题标题】:Macro not selecting range for comment change in Excel宏未选择 Excel 中注释更改的范围
【发布时间】:2016-03-29 05:54:41
【问题描述】:

我正在尝试为 Excel 2010 编写一个宏,该宏将允许用户选择一个单元格或合并单元格范围,然后取消加粗注释并添加一个模式。

Sub commentstripe()
'
' commentstripe Macro
'
'
    Dim myRange As Range
    Set myRange = Range(Selection.Address)
    myRange.Comment.Shape.TextFrame.Characters.Font.Bold = False
    With myRange.Interior
        .Pattern = xlLightUp
        .PatternColorIndex = xlAutomatic
        .PatternTintAndShade = 0
    End With
    ActiveWorkbook.Save
End Sub

它似乎挂在 myRange.comment 行,但我似乎无法弄清楚原因。我从快捷键 Ctrl+Shift+A 运行它。任何建议将不胜感激。

问候, 桑迪

【问题讨论】:

  • 在 Visual Basic 编辑器中(在弹出框中)。
  • 我收到运行时错误“91”:对象变量或未设置块变量。在多玩一些时,它适用于单个单元格,但不适用于由合并单元格组成的单个单元格。
  • 或者可能是单元格没有注释。请参阅下面的处理 cmets 的更好方法: Sub CommentAdd() Dim cmt As Comment Dim cmtText As String Set cmt = ActiveCell.Comment If cmt Is Nothing Then Set cmt = ActiveCell.AddComment Else 'do nothing End If With cmt.Shape.TextFrame .Characters.Font.FontStyle.Bold = False End With
  • 是的,安德烈斯可能是对的。不确定 cmets 如何处理合并的单元格。用户如何选择单元格?因为选择任何没有注释的范围都会中断。你可以循环遍历所有的 cmets 吗?
  • 用户通过点击来选择一个单元格或合并的单元格。

标签: vba excel


【解决方案1】:

我不明白它为什么会挂起......除了如果单元格中没有评论,它将引发错误。 此外,如果这是一个新工作簿,而您只是保存它,它会发出警告说这是一个 excel 文件,而不是启用宏的 excel 文件。仅供您了解。

我评论了保存行,一切正常。

编辑:看看这是否有效

Sub commentstripe()

Dim myRange As Range
Set myRange = Selection
myRange.Cells(1, 1).Comment.Shape.TextFrame.Characters.Font.Bold = False
With myRange.Interior
    .Pattern = xlLightUp
    .PatternColorIndex = xlAutomatic
    .PatternTintAndShade = 0
End With
ActiveWorkbook.Save
End Sub

【讨论】:

  • 它似乎正在处理单个单元格,但不是由合并单元格组成的单个单元格。单个单元格在最后有和没有保存的情况下都可以工作。已编辑:它在两种类型的单元格中都有注释。
  • 我刚刚尝试了更新,请查看我的答案的编辑。
  • 不幸的是,这似乎不适用于单个单元格或合并的单元格。它给出了运行时错误“424”:需要对象。
  • 没错,我的错。正确的是 myRange.Cells
猜你喜欢
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多