Страницы: 1
RSS
Убрать кавычки, образующиеся при выполнении кода VBA
 
Доброго времени суток, уважаемые форумчане. Заранее прошу прощения за не слишком точное описание проблемы в названии темы, но никак другого не придумалось :oops: . Итак, вопрос: по ходу выполнения макроса, который должен определить УФ, имеется следующая строка (значение i верное):
Код
.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:=Chr(36) & Cells(2, i).Address(False, False)           
УФ должно проверить ячейки на неравенство с указанной ячейкой. В записанном макрорекодером коде эта строка выглядит так:
Код
.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="=$AE2"

Запись макрорекодера выдает правильный результат: Значение ячейки <> $AE2 А вот мой код, приведенный выше, дает крайне похожий, но немного не такой результат: Значение ячейки <> "$AE2" . УФ, разумеется, отрабатывая такое условие, выдает не тот результат на который я рассчитывал. Что и как нужно написать, чтобы Chr(36) & Cells(2, i).Address(False, False) при правильном значении не имел кавычек в итоговом результате, если конечно дело в кавычках, а не в чем-либо ином. Другими словами как обеспечить для УФ сравнение с содержанием ячейки (в данном случае $AE2, а не с выражением "$AE2"?

Заранее спасибо всем откликнувшимся

 
А где файл Excel?
Владимир
 
Решил что не нужно, но если не так, не жалко. Итак, по нажатию кнопки "Добавить арендаторов" должно быть выполнено (помимо добавления строк (работает правильно)) УФ диапазонов в столбцах с AB по AH следующим кодом:    
Код
'    Formula1:="=$AE2"
   
    For i = 28 To 34
        With Range(Cells(3, i), Cells(LRow_new, i))
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:=Chr(36) & Cells(2, i).Address(False, False)
            .FormatConditions(Range(Cells(3, i), Cells(LRow_new, i)).FormatConditions.Count).SetFirstPriority
            .FormatConditions(1).Font.Bold = True
            .FormatConditions(1).Font.Italic = True
            .FormatConditions(1).Font.Color = -16776961
            .FormatConditions(1).Font.TintAndShade = 0
            .FormatConditions(1).StopIfTrue = False
        End With
    Next i

в результате выполнения кода ,УФ сравнивает ячейку не со значением ячейки ,а с выражением типа "$AE2"

 
У меня при нажатии на указанную кнопку возникает ошибка времени выполнения с кодом 424.
Владимир
 
это из того что есть ссылки на удаленные листа наверное. Попробуйте такой код для кнопки:
Код
Private Sub New_data_Click()

          LRow_new = 50
                
'настройка условного форматирования
    With Range(Cells(3, 9), Cells(LRow_new, 64)) 'если ячейка = 0
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=0"
        .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        .FormatConditions(1).Font.ThemeColor = xlThemeColorDark1
        .FormatConditions(1).Font.TintAndShade = 0
        .FormatConditions(1).StopIfTrue = False
    End With
'    Formula1:="=$AE2"
    
    For i = 28 To 34
        With Range(Cells(3, i), Cells(LRow_new, i))
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:=Chr(36) & Cells(2, i).Address(False, False)
            .FormatConditions(Range(Cells(3, i), Cells(LRow_new, i)).FormatConditions.Count).SetFirstPriority
            .FormatConditions(1).Font.Bold = True
            .FormatConditions(1).Font.Italic = True
            .FormatConditions(1).Font.Color = -16776961
            .FormatConditions(1).Font.TintAndShade = 0
            .FormatConditions(1).StopIfTrue = False
        End With
    Next i

End Sub
 
А где первый знак (знак равенства) в значении свойства Formula1 в строке 17 из #5? CHR(36) - это "$" а не "="
Изменено: sokol92 - 21.07.2019 17:51:11
Владимир
 
Спасибо за подсказку, sokol92. Оказывается надо было вот так написать ...Formula1:=Chr(61) & Chr(36) & Cells(2, i).Address(False, False)
Блин, ведь рядом было, я же эту конструкцию проверял, только еще дополнительно и в кавычки "обертывал", получалось в итоге ""$AE2"", а вот так не проверил 8-0 . Еще раз спасибо.
 
Успехов!
Владимир
Страницы: 1
Наверх