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