Vba EXCEL 2010查找最大值单元格并更改其颜色

Vba EXCEL 2010查找最大值单元格并更改其颜色,vba,excel,excel-2010,cell,Vba,Excel,Excel 2010,Cell,我正在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 =

我正在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


任何帮助都将不胜感激。

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

ActiveSheet.Range(maxCell).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
Sub-findMax_1()
调光范围
将标志变暗为布尔值
作为整数的Dim i
将最大值设置为双精度
将maxCell设置为字符串
flag=True
i=1
最大值=0
而flag=True
如果单元格(i,1)“,则
如果单元(i,1)>最大值,则
最大值=单元(i,1)
maxCell=范围(单元格(i,1),单元格(i,1))。地址
如果结束
i=i+1
其他的
flag=False
如果结束
温德
活动页范围(“A10”)=最大值
ActiveSheet.Range(maxCell.Interior.Color=vbBlue
端接头
结果:

你也可以在我的博客上看这篇文章,了解更多信息


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

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

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


使用
ActiveSheet.Range(maxCell.Interior.Color=vbBlue
。顺便说一句,为什么不只是有条件的寻找呢?还有一件事——如果您选择的@simoco中的所有值都无效,错误:10004,谢谢。这正是我告诉您的。阅读我的第一条评论,阿加尼找到了原因。谢谢顺便说一句,我会做
max=Application.max(选择)
,然后在循环中:
如果c.Value=max,那么c.Interior.Color=vbBlue
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