Изменение цвета фона ячейки в Excel с использованием общедоступной функции VBA - не программист VBA - PullRequest
1 голос
/ 11 декабря 2019

Я хочу изменить цвет заливки ячейки, основываясь на значении в другой ячейке. Это будет последовательная реализация, например, A1, основанная на значении в B1;A2, основанный на значении в B2 и т. Д.

Я хочу использовать публичную функцию, чтобы я мог использовать ее таким образом и использовать для реализации серии.

IF(B1>0,ColourCell("A1","Green"),IF(B1<0,ColourCell("A1","Red",ColourCell("A1","White"))))

Я не знаю типов данных и т. Д. В VB - могу ли я получить некоторую помощь, чтобы она работала в VB. Я вставил модуль (общий). Вот что это за функция.

Public Function ColourCell(cell, colour)

If colour = "Green" Then

    Range("cell").Interior.Color = vbGreen

ElseIf colour = "Red" Then

    Range("cell").Interior.Color = vbRed

ElseIf colour = "White" Then

    Range("cell").Interior.Color = vbWhite

End If

End Function

Насколько я понимаю, когда все это работает, я могу использовать ее описанным способом.

Спасибо

1 Ответ

2 голосов
/ 11 декабря 2019

Чтобы обойти проблему, упомянутую BigBen, здесь есть еще один подход.

Вам нужно удалить кавычки вокруг cell, так как в противном случае он будет рассматриваться как буквенная строка.

Хорошая практикатакже для объявления типов аргументов в вашей функции.

Здесь нет сообщений об ошибках, например, для недопустимых диапазонов.

Sub ColourCell(cell As String, colour As String)

If colour = "Green" Then
    Range(cell).Interior.Color = vbGreen
ElseIf colour = "Red" Then
    Range(cell).Interior.Color = vbRed
ElseIf colour = "White" Then
    Range(cell).Interior.Color = vbWhite
End If

End Sub

Вызовите подпрограмму следующим образом:

Sub x()

ColourCell "A1", "Green"

End Sub
...