Может кто-нибудь помочь мне, почему я получаю сообщение об ошибке, если мне это нравится в VBA
Worksheets("ME2N").Range("AB6:AB31000").Formula = "=IF(AA6<T6;"False";"True")"
Уже пробовал так и все равно выдает ошибку
Worksheets("ME2N").Range("AB6:AB31000").Formula = "=IF(AA6<T6,"False","True")"


Проблема в вашем коде VBA связана с тем, как Excel ожидает форматирования формул, особенно в отношении использования кавычек для текстовых строк и разделителя десятичных чисел и тысяч. Вот несколько моментов, которые следует учитывать:
Кавычки для строк. В формулах Excel, содержащих текстовые строки, текст должен заключаться в двойные кавычки. В VBA вам нужно дважды использовать двойные кавычки, чтобы правильно их экранировать.
Запятая или точка с запятой. В зависимости от региональных настроек Excel разделителем списка может быть запятая или точка с запятой. Во многих регионах разделителем списка является запятая, а не точка с запятой.
Локализация формул. Если в настройках Excel в качестве десятичного разделителя используется запятая, вам может потребоваться использовать точку с запятой для разделения аргументов функций. В противном случае используется запятая.
Вот как вы можете исправить свой код:
Worksheets("ME2N").Range("AB6:AB31000").Formula = "=IF(AA6<T6, ""False"", ""True"")"
Worksheets("ME2N").Range("AB6:AB31000").Formula = "=IF(AA6<T6; ""False""; ""True"")"
Ключевым моментом здесь является использование "" (дважды двойные кавычки), чтобы правильно экранировать кавычки в строке.
Sub ApplyFormula()
' For English Locale
Worksheets("ME2N").Range("AB6:AB31000").Formula = "=IF(AA6<T6, ""False"", ""True"")"
' For European Locale
' Worksheets("ME2N").Range("AB6:AB31000").Formula = "=IF(AA6<T6; ""False""; ""True"")"
End Sub
Используя правильный формат, вы сможете избежать синтаксических ошибок и успешно применить формулу в указанном диапазоне.
В моем немецком Excel я не могу сочетать «если» с точкой с запятой, правильна только запятая. Для локализованной версии есть .FormulaLocal (для которой требуется точка с запятой + локальное имя формулы).
Используя VBA, вам всегда необходимо указывать американо-английскую версию формулы при использовании свойства Formula, см., например, stackoverflow.com/questions/35724156/…. Если по какой-либо причине вам нужна формула, зависящая от языка (например, при настройке формулы для условного форматирования), вы можете определить символ-разделитель с помощью Application.International(xlListSeparator)
Если вы хотите, чтобы строки
"True"или"False"были в Excel, вам необходимо заключить их в двойные кавычки при работе в VBA (чтобы среда выполнения VBA знала, что вы не хотите завершать строку, а хотите, чтобы внутри нее был символ кавычки). string. Но если вы хотите, чтобы в вашем листе было логическое значениеTrueилиFalse(что обычно имеет больше смысла), просто опустите кавычки. Обратите внимание, что вам нужно указать англо-американскую версию формулы:.Formula = "=IF(AA6<T6,False,True)".