Как сделать, чтобы функция VBA ссылалась на ячейку в столбце рядом с ней? - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь сделать ссылку на соседнюю ячейку той же строки с помощью оператора if.

= CheckColour1 (D26) ищет цвет фона ячейки в столбце D и выводит оператор в столбце E. (Эта функция введена в столбце E).

Я хочу эту функцию чтобы найти цвет фона ячейки в столбце D и, если он оранжевый, выведите значение в ячейке, ровно 4 столбца справа. то есть, если = столбец CheckColour1 (G2) используется в столбце D, а ячейка оранжевого цвета, значение будет исходить из H2.

Public Function CheckColour1(range)

    If range.Interior.Color = RGB(198, 239, 206) Then
        CheckColour1 = "Good, no CAP" 'If green, keep blank'
    ElseIf range.Interior.Color = RGB(255, 199, 206) Then
        CheckColour1 = "1"   'If red, write 1'
    ElseIf range.Interior.Color = RGB(255, 235, 156) Then
        CheckColour1 = ""  'If yellow, keep blank'
    ElseIf range.Interior.Color = RGB(255, 204, 153) Then
        CheckColour1 = "Either 1+,2,2+(enter value in col H)" 'If orange, user discretion, type out the value in the row at H'
    ElseIf range.Interior.Color = RGB(255, 255, 255) Then
        CheckColour1 = "" 'if white, keep blank'
    Else
        CheckColour1 = "Enter number"
    End If

End Function

В настоящее время моя функция выводит оператор в зависимости только от цвета и не изменить.

Я хочу заменить эту строку: CheckColour1 = "Либо 1 +, 2,2 + (введите значение в столбце H)" 'Если оранжевое, по усмотрению пользователя, введите значение в строке в H '

В отношении выходных данных: если ячейка оранжевого цвета, я хочу, чтобы она ссылалась на ячейку в столбце H (введите 2+, если оранжевый). В идеале в столбце H будет просто число (2+). [

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Пожалуйста, попробуйте эту функцию. Я переписал его для удобства чтения.

Function CheckColour1(Rng As range) As String

    Select Case Rng.Interior.Color
        Case RGB(198, 239, 206)                         ' green
            CheckColour1 = "Good, no CAP"
        Case RGB(255, 199, 206)                         ' pink
            CheckColour1 = "1"
        Case RGB(255, 204, 153)                         ' orange
            CheckColour1 = CStr(Rng.Offset(0, 4).Value)
        Case RGB(255, 235, 156), RGB(255, 255, 255)     ' yellow, white
            CheckColour1 = ""
        Case Else
            CheckColour1 = "Enter number"
    End Select
End Function
0 голосов
/ 05 марта 2020

CheckColour1 = Application.Caller.Parent.Range ("H" & Application.Caller.Row)

Ответ: Скотт Кранер , найденный выше.

...