【问题标题】:EXCEL 2010 find max value cell and change its colorEXCEL 2010 找到最大值单元格并更改其颜色
【发布时间】:2014-03-10 15:56:37
【问题描述】:

我正在开发 VBA EXCEL 2010。

我需要在列中找到最大值并用颜色突出显示其单元格。

Sub findMax_1()
    Dim c As Range
    Dim max As Double
    Dim maxCell As String
     max = 0
     For Each c In Selection
        If c.Value > max Then
           max = c.Value
           maxCell = c.Address
        End If
     Next c
     ActiveSheet.Range("A10") = max
     ActiveSheet.Range(maxCell).Color = vbBlue
 End Sub

它不起作用。运行时错误 438。

任何帮助将不胜感激。

【问题讨论】:

  • 使用ActiveSheet.Range(maxCell).Interior.Color = vbBlue。顺便说一句,为什么不只是条件格式化?还有一件事 - 如果您选择的所有值 maxCell 将是空字符串,ActiveSheet.Range(maxCell) 会给您一个错误
  • @simoco,它不起作用,错误:10004,谢谢
  • 这正是我被告知的内容。再次阅读我的第一条评论
  • 我找到了原因。谢谢!
  • 顺便说一句,我会做max=Application.Max(Selection) 然后循环:If c.Value=max Then c.Interior.Color = vbBlue

标签: vba excel excel-2010 cell


【解决方案1】:

正如 cmets 中提到的 simco,您需要更改以下代码行:

ActiveSheet.Range(maxCell).Color = vbBlue

ActiveSheet.Range(maxCell).Interior.Color = vbBlue

您当前代码的问题是,如果您没有选择任何内容,最终会出现 1004 错误。克服此问题的一种方法是 simco 提到的检查您是否选择了任何单元格。下面的方法是我比较喜欢的方法。假设您在 A 列中有数据:

使用下面的代码:

Sub findMax_1()
    Dim c As Range
    Dim flag As Boolean
    Dim i As Integer

    Dim max As Double
    Dim maxCell As String
    flag = True
    i = 1
    max = 0
    While flag = True
        If Cells(i, 1) <> "" Then

            If Cells(i, 1) > max Then
               max = Cells(i, 1)
               maxCell = Range(Cells(i, 1), Cells(i, 1)).Address

            End If
              i = i + 1
        Else
            flag = False
        End If

    Wend
     ActiveSheet.Range("A10") = max
     ActiveSheet.Range(maxCell).Interior.Color = vbBlue
 End Sub

结果:

您也可以在我的博客上查看这篇文章以获取更多信息Excel VBA Formatting Cells and Range


正如 simco 提到的,您可以使用条件格式,选择包含数据的列:

从主页功能区选择 条件格式>>顶部/底部规则>>前10项...>>

从左侧文本框中选择“1”,然后从右侧的下拉列表中选择您的颜色:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多