编译错误:语法错误是由代码插入excel公式引起的

时间:2019-04-04 09:48:43

标签: excel vba compiler-errors

此代码行导致编译错误:语法错误 我不知道我必须改变什么。它可以与其他公式配合使用,所以我认为这可能与公式有关。

  Range("O2:O" & LastRow).Formula = "=WENN(Q2="";"";WENN(H2*7*Q2<L2;"Möglich";"Prüfen"))"

感谢您的帮助和建议

我的整个代码:

    Columns("A:M").Select
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("N2").Select
    Range("P2:P240023").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("N3").Select
    Range("N3:O24023").Select
    Selection.ClearContents
    Range("N2:O2").Select
    Selection.AutoFill Destination:=Range("N2:O24023")
    Range("N2:O240023").Select
    Columns("A:O").Select
    Columns("A:O").EntireColumn.AutoFit
    Range("C:C,J:J,K:K,M:M").Select
    Range("M1").Activate
    Selection.EntireColumn.Hidden = True
    Rows("2:2").Select
    ActiveWindow.FreezePanes = True

    Range("O2:O" & LastRow).Formula = "=WENN(Q2="";"";WENN(H2*7*Q2<L2;"Möglich";"Prüfen"))"

2 个答案:

答案 0 :(得分:3)

问题是公式的第一部分引号"不够,导致字符串不终止。尝试像这样更改代码:

Range("O2:O" & lastRow).Formula = "=IF(Q2="""","""",IF(H2*7*Q2<L2,""Möglich"",""Prüfen""))"

或者如果您想保留本地语言公式,则这样:

Range("O2:O" & lastRow).FormulaLocal = "=WENN(Q2="""";"""";WENN(H2*7*Q2<L2;""Möglich"";""Prüfen""))"

希望有帮助。

答案 1 :(得分:0)

使用公式时,“”(空)应为“””,“测试”应为““测试””

更改此:

Range("O2:O" & LastRow).Formula = "=WENN(Q2="";"";WENN(H2*7*Q2<L2;"Möglich";"Prüfen"))"

对此:

Sheet1.Range("O2:O" & LastRow).Formula = "=WENN(Q2="""";"""";WENN(H2*7*Q2<L2,""Möglich"",""Prüfen""))"

如果需要,还可以将 “;” 更改为 “,” (取决于Excel版本)。< / p>

完整代码:

Option Explicit

Sub test()

    Dim LastRow As Long

    With ThisWorkbook.Worksheets("Sheet1") '<- Change sheet name if needed

        LastRow = .Cells(.Rows.Count, "O").End(xlUp).Row '<- Change column lf needed. Have in mind that because Lastrow is in the with statement, Lastrow calculation related with the sheet in the with statemet

        .Columns("A:M").Replace What:=",", Replacement:=".", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        .Range("N3:O24023,P2:P240023").ClearContents '<- ClearContents clear only Contents . if you want to clear everything use .Clear
        .Range("N2:O2").AutoFill Destination:=Range("N2:O24023")
        .Columns("A:O").EntireColumn.AutoFit
        .Range("C:C,J:J,K:K,M:M").EntireColumn.Hidden = True
        Rows("2:2").Select
        ActiveWindow.FreezePanes = True

        .Range("O2:O" & LastRow).Formula = "=IF(Q2="""",IF((H2*7*Q2)<L2,""Möglich"",""Prüfen""))"

    End With

End Sub