VBA меняет постоянные значения самостоятельно - PullRequest
0 голосов
/ 13 декабря 2011

Я работаю над разделом довольно большого макроса VBA, который предназначен для применения условного форматирования, когда другая ячейка равна 1, так что ячейка может быть выделена как «выбранная».
При генерации условного форматированияФормула, которая делает это, в Excel, похоже, меняет константу по своему усмотрению - все значения, из которых она читает, должны быть в строке 99, и это в коде, но вместо этого Excel изменяет формулу на =IF(B101=1,1,0) для первой,затем =IF(B105=1,1,0) для следующего и т. д.
Это объединенные ячейки, так что я бы предположил, что excel пытается автоматически завершить мой код, смещая формулу на количество строк вниз, на которых я нахожусь.Очевидно, что это нежелательно, кто-нибудь знает, как я могу остановить Excel сделать это?Соответствующий раздел кода ниже:

    For Each x In Range(crange)
            condrow = 99
            Range(Cells(coffset + 3, y + 1), Cells(coffset + 2 + currentdiv, y + 1)).FormatConditions.Delete
            Cells(coffset + 3, y + 1).Value = x
            selectform = "=IF(" & ConvertToLetter(Cells(coffset + 3, y + 1).Column) & CStr(condrow) & "=1,1,0)"
            Range(Cells(coffset + 3, y + 1), Cells(coffset + 2 + currentdiv, y + 1)).Merge
        Range(Cells(coffset + 3, y + 1), Cells(coffset + 2 + currentdiv, y + 1)).FormatConditions.Delete
        Range(Cells(coffset + 3, y + 1), Cells(coffset + 2 + currentdiv, y + 1)).FormatConditions.Add Type:=xlExpression, Formula1:= _
            "clashform"

1 Ответ

1 голос
/ 13 декабря 2011

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

Например, «B $ 101» разрешит столбец (B) корректируется при перемещении формулы в другое место, но не в строку, которой предшествует "$".

...