условно по ссылке Cells.Find () - VBA - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу найти «Среднее»:

Cells.Find(What:="Average", After:=ActiveCell, LookIn:=xlValues, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False).Activate

Предположим, оно найдено в A5.Я ищу способ

  1. выбрать одну ячейку справа (B5)
  2. выбрать одну ячейку справа внизу (B6)
  3. , если B6 выше /равный / меньший, чем B5, тогда значение цвета B6 должно быть синим / серым / красным.
  4. То же самое, пока не дойдут до K5 и K6

PS: все ячейки справаиз A5 и A6 являются числами.

1 Ответ

1 голос
/ 22 апреля 2019

Я сделал код для вас, но я сделал без цикла.

Почему я обошелся без петли? Таким образом, вы можете создать цикл и стать лучше в VBA. Если бы я сделал всю работу за вас, это не поможет вам улучшить ваши навыки, хорошо? Надеюсь, тебе понравится мой друг!

Public Sub PaintValues()

    Dim cl As Range
    Dim clOnRight As Range
    Dim clOnRightBelow As Range

    Set cl = Cells.Find(What:="Average", After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)

    If cl Is Nothing Then
        MsgBox "Average not found in this sheet!", vbExclamation, "Error!"
        Exit Sub
    End If

    'Get the left cell of Cl (Average)
    Set clOnRight = cl.Offset(0, 1)
    Set clOnRightBelow = cl.Offset(1, 1)

    If clOnRightBelow > clOnRight Then
        clOnRightBelow.Interior.Color = vbBlue
    ElseIf clOnRightBelow = clOnRight Then
        clOnRightBelow.Interior.Color = VBA.RGB(122, 122, 122)
    ElseIf clOnRightBelow < clOnRight Then
        clOnRightBelow.Interior.Color = vbRed
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...