代码之家  ›  专栏  ›  技术社区  ›  Hella Morte

VBA真-假条件[重复]

  •  0
  • Hella Morte  · 技术社区  · 1 年前

    如果我在VBA中这样做,有人能帮我为什么会出错吗

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

    已经这样尝试了,但仍然会出错

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

    1 回复  |  直到 1 年前
        1
  •  -1
  •   Leedo    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
    

    通过使用正确的格式,应避免语法错误,并在指定的范围内成功应用公式。