Условие VBA «истина-ложь»

Может кто-нибудь помочь мне, почему я получаю сообщение об ошибке, если мне это нравится в VBA

Worksheets("ME2N").Range("AB6:AB31000").Formula = "=IF(AA6<T6;"False";"True")"

Уже пробовал так и все равно выдает ошибку

Worksheets("ME2N").Range("AB6:AB31000").Formula = "=IF(AA6<T6,"False","True")"

Если вы хотите, чтобы строки "True" или "False" были в Excel, вам необходимо заключить их в двойные кавычки при работе в VBA (чтобы среда выполнения VBA знала, что вы не хотите завершать строку, а хотите, чтобы внутри нее был символ кавычки). string. Но если вы хотите, чтобы в вашем листе было логическое значение True или False (что обычно имеет больше смысла), просто опустите кавычки. Обратите внимание, что вам нужно указать англо-американскую версию формулы: .Formula = "=IF(AA6<T6,False,True)".

FunThomas 03.06.2024 09:30
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
1
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в вашем коде VBA связана с тем, как Excel ожидает форматирования формул, особенно в отношении использования кавычек для текстовых строк и разделителя десятичных чисел и тысяч. Вот несколько моментов, которые следует учитывать:

  1. Кавычки для строк. В формулах Excel, содержащих текстовые строки, текст должен заключаться в двойные кавычки. В VBA вам нужно дважды использовать двойные кавычки, чтобы правильно их экранировать.

  2. Запятая или точка с запятой. В зависимости от региональных настроек Excel разделителем списка может быть запятая или точка с запятой. Во многих регионах разделителем списка является запятая, а не точка с запятой.

  3. Локализация формул. Если в настройках 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 (для которой требуется точка с запятой + локальное имя формулы).

KekuSemau 03.06.2024 09:20

Используя VBA, вам всегда необходимо указывать американо-английскую версию формулы при использовании свойства Formula, см., например, stackoverflow.com/questions/35724156/…. Если по какой-либо причине вам нужна формула, зависящая от языка (например, при настройке формулы для условного форматирования), вы можете определить символ-разделитель с помощью Application.International(xlListSeparator)

FunThomas 03.06.2024 09:28

Другие вопросы по теме