Как написать оператор WITH, который перебирает строки в формуле WITH? - PullRequest
1 голос
/ 03 июля 2019

Я строю интерактивную диаграмму Ганта со множеством строк (именно поэтому я использую VBA), и у меня возникают проблемы с форматированием ячеек. По сути, я просто хочу, чтобы клетки имели цвет, основанный на формуле AND. Формула ссылается на другие ячейки, поэтому форматирование не основано на собственном значении ячейки. Сложность в том, что моя формула должна меняться в зависимости от конкретной строки, через которую она проходит. Мне удалось создать код, который корректно проходит по каждой строке, но я не могу изменить формулу. Прямо сейчас мой код дает мне синтаксическую ошибку в части формулы моего выражения with. Я надеюсь, что вы, ребята, можете помочь!

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

Public Sub FormatTest()
Dim Sheet As Object
Dim Area As Range, r As Range
Dim i As Integer

Set Area = Sheets("Styregruppe - Tester").Range("H11:BK58")
For Each r In Area.Rows
    For i = 11 To 58
    With r.FormatConditions
    .Delete
        With .Add(Type:=xlExpression, Formula1:="=OG(("C" & i)<=H8;("D" & i)>=H8)")
            .Interior.Color = RGB(0, 176, 240)
            .StopIfTrue = False
        End With
    End With
 Next i
 Next r
End Sub

1 Ответ

1 голос
/ 03 июля 2019

Эта строка: .Add(Type:=xlExpression, Formula1:="=OG(("C" & i)<=H8;("D" & i)>=H8)")

Имеет неправильные кавычки, вы взяли C из кавычек, поэтому он считает его переменной, а амперсанд находится в кавычках, поэтому интерпретируется как символ строки, а не каксимвол конкатенации.

Вы хотите что-то вроде: .Add(Type:=xlExpression, Formula1:="=OG((C" & i & ")<=H8;(D" & i & ")>=H8)")

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