【问题标题】:VBA identify column header of highlighted cellsVBA识别突出显示的单元格的列标题
【发布时间】:2014-02-26 07:51:40
【问题描述】:

我是 VBA 新手。我正在使用带有用户在单元格 A10:E10 中选择的下拉列表的 Excel 工作表。我的宏对用户输入的信息进行数据验证。如果输入的数据不符合宏设置的参数,则单元格将突出显示。在宏的末尾,我想要一个 MsgBox,说明突出显示的单元格存在于 x 列/秒中。这是我所拥有的:

Sub CheckErrors()
Range("A11:E100000").Select
Dim high As Range
Dim c As Range
Set high = Selection
  For Each c In high
    If c.Interior.Pattern <> xlNone Then
     MsgBox ("Please update highlighted cells in  " & c.Column & " and run Data Validation again")
    Exit Sub
   End If
  Next c
 MsgBox ("Data verification is complete")

End Sub 

理想情况下,我希望代码能够识别突出显示哪些单元格并在 A10:E10 中显示列标题,而不是说 c.Column。例如,如果 B24 和 C82 被突出显示,我希望 MsgBox 声明“请更新在电话号码和地址中找到的突出显示的单元格”。 “电话号码”和“地址”分别是单元格 B10 和 C10 中的值,来自用户之前选择的下拉列表。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: vba


    【解决方案1】:

    简单!您已经通过获取列完成了大部分工作,您需要做的就是将您的值插入到适当的行中,然后您就完成了。以下是您的消息框行的外观:

     `MsgBox ("Please update hilighted cells in " & Cells(10, c.Column).value & " and run Data Validation again")`
    

    我不确定您对单元格的熟悉程度,但它是 Cells(row index, column index) 并使用 .Value 属性返回该单元格的内容。假设您的标题位于工作簿的第 10 行,这应该会为您提供所需的内容。

    【讨论】:

    • 谢谢!那行得通,我很欣赏关于 Cells 的解释。 MsgBox 是否可以包含多个列标题(如果适用)?
    • 当然,您可以将任意数量的值连接到消息框中。您只需要设置它们并以最终消息有意义的方式插入它们。我可能会建议遍历工作表中的所有单元格并将单元格添加到集合中,这是一个非常非常方便的对象。不过我会小心,如果您有多个跨列的单元格,它可能最终会从每列的标题上嘎嘎作响,这对您的用户来说可能没有高亮单元格并一次提供一个列标题有用。
    • 谢谢!再次,效果很好。感谢您的帮助。
    • 没问题。很高兴我能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2018-10-04
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多