Что такое версия этого кода на 2016 год? (ошибка времени выполнения 5) - PullRequest
1 голос
/ 19 июня 2019

У меня есть небольшой код VBA для создания условного форматирования в Excel, он хорошо работает в Excel 365, но генерирует «Ошибка времени выполнения 5» при попытке в более ранних версиях Excel (например, 2016).Не могли бы вы посоветовать исправление, чтобы оно работало на большинстве версий?

Public Sub CF()

    With Range("K20:ZH20").FormatConditions.Add(Type:=xlExpression, Formula1:="=ISNUMBER(SEARCH(" & Chr(34) & "Project Exec" & Chr(34) & ";$A$20))")
        .Interior.Pattern = xlPatternLightUp
    End With

End Sub

Спасибо!


После комментария Джона Коулмана я обнаружил, что речь идет о региональных настройках.Это вызывает ошибку, потому что я проверил на компьютере с настройкой разницы.(приведенный выше код работает для компьютера с "." в качестве разделителя тысяч, а не для использования в компьютере "," в качестве разделителя тысяч. Теперь возникает вопрос, как сделать код независимым от региональных настроек?

1 Ответ

0 голосов
/ 20 июня 2019

Я нашел решение от другой угрозы - использовать свойство FormulaLocal. Приведенный выше код для работы с любыми региональными настройками выглядит следующим образом:

Public Sub CF()
    Dim formula as String 
    formula = "=ISNUMBER(SEARCH(" & Chr(34) & "Project Exec" & Chr(34) & ",$A$20))" 
    Range("A1").Formula = formula     
    formula = Range("A1").FormulaLocal
    With Range("K20:ZH20").FormatConditions.Add(Type:=xlExpression, Formula1:=formula)
        .Interior.Pattern = xlPatternLightUp
    Range("A1").ClearContents
    End With

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