1

我想用 Vba 代码找到颜色值没有用红色填充的最小值,我的代码在这里:

  Private Sub bidcanceled_Click()

  Dim HLF As Range, finalHLF
  Dim minNum As Double
  Dim Lastrow As Integer
  Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
  Set HLF = Range("e2:e" & Lastrow)
  Range("e2:e" & Lastrow).Select

  minNum = WorksheetFunction.MIN(HLF)
  finalHLF = HLF.Find(what:=minNum, Lookat:=xlWhole).Address
  Range(finalHLF).Interior.Color = vbGreen
  Range(finalHLF).Offset(, 3).Value = "bid canceled"

  End Sub

在此处输入图像描述

输出必须选择单元格= 41并用绿色填充颜色可以任何人帮助解决这个问题,当我运行代码时它选择37并用绿色填充它..我希望它选择非颜色值并找到最小数字在那一栏

4

1 回答 1

1

根据我的评论,我建议实施AutoFilter颜色:


样本数据:

在此处输入图像描述


示例代码:

Sub Test()

Dim Lr As Long, MinVal As Long
Dim Rng As Range

With Sheet1 'Change according to your sheets CodeName

    'Retrieve last used row on column E
    Lr = .Cells(.Rows.Count, 5).End(xlUp).Row

    'Apply our filter of non-colored cells
    Set Rng = .Range("E1:E" & Lr)
    Rng.AutoFilter 1, , 12

    'First check if any rows are filtered to prevent error on .SpecialCells and color the minimum
    If Rng.SpecialCells(12).Count > 1 Then
        MinVal = WorksheetFunction.min(Rng.SpecialCells(12))
        Rng.SpecialCells(12).Find(MinVal, Lookat:=xlWhole).Interior.Color = vbGreen
        Rng.SpecialCells(12).Find(MinVal, Lookat:=xlWhole).Offset(, 3).Value = "bid canceled"
    End If

    'Get rid of Filter
    Rng.AutoFilter

End With

End Sub

样本结果:

在此处输入图像描述

于 2019-12-08T09:25:48.670 回答