Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 错误400消息-Don';I don’我不知道如何解这个公式_Vba_Excel_Compiler Errors - Fatal编程技术网

Vba 错误400消息-Don';I don’我不知道如何解这个公式

Vba 错误400消息-Don';I don’我不知道如何解这个公式,vba,excel,compiler-errors,Vba,Excel,Compiler Errors,您好,我已经把这个VBA放在一起,通过浏览这个网站上的帖子,它使我能够在一张纸上运行所有值的公式。然而,每次我运行它时,都会收到一条错误消息。我哪里做错了?此外,我如何使用由另一张图纸上的列确定的长度使此vba工作 Sub FillWorksheet1() Application.ScreenUpdating = False lastRow = Range("B" & Rows.Count).End(xlUp).Row Range("AF2").Formula = "=firstP

您好,我已经把这个VBA放在一起,通过浏览这个网站上的帖子,它使我能够在一张纸上运行所有值的公式。然而,每次我运行它时,都会收到一条错误消息。我哪里做错了?此外,我如何使用由另一张图纸上的列确定的长度使此vba工作

Sub FillWorksheet1()

Application.ScreenUpdating = False

lastRow = Range("B" & Rows.Count).End(xlUp).Row

Range("AF2").Formula = "=firstPart($G2)"
Range("AF2").AutoFill Destination:=Range("AF2:AF" & lastRow)

Range("AG2").Formula = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,2,FALSE)"
Range("AG2").AutoFill Destination:=Range("AG2:AG" & lastRow)

Range(AH2).Formula = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,3,FALSE)"
Range("AH2").AutoFill Destination:=Range("AH2:AH" & lastRow)

Range(AI2).Formula = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,4,FALSE)"
Range("AI2").AutoFill Destination:=Range("AI2:AI" & lastRow)

Range(AJ2).Formula = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,5,FALSE)"
Range("AJ2").AutoFill Destination:=Range("AJ2:AJ" & lastRow)

Range(AK2).Formula = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,6,FALSE)"
Range("AK2").AutoFill Destination:=Range("AK2:AK" & lastRow)

Range(AL2).Formula = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,7,FALSE)"
Range("AL2").AutoFill Destination:=Range("AL2:AL" & lastRow)
ActiveSheet.AutoFilterMode = False

Application.ScreenUpdating = True

End Sub
任何帮助都将不胜感激


第一部分公式是由VBA创建的,用于删除数字后面的文本,以便收集产品代码,而不仅仅是客户特定的代码。

如上所述,缺少报价

您还可以通过只为每个公式使用一行代码来提高代码的可读性。 例如:

Dim LastRow As Long

LastRow = Range("B" & Rows.Count).End(xlUp).Row

Range("AF2:AF" & LastRow) = "=firstPart($G2)"
Range("AG2:AG" & LastRow) = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,2,FALSE)"
Range("AH2:AH" & LastRow) = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,3,FALSE)"
Range("AI2:AI" & LastRow) = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,4,FALSE)"
'ect

如前所述,引用缺失

您还可以通过只为每个公式使用一行代码来提高代码的可读性。 例如:

Dim LastRow As Long

LastRow = Range("B" & Rows.Count).End(xlUp).Row

Range("AF2:AF" & LastRow) = "=firstPart($G2)"
Range("AG2:AG" & LastRow) = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,2,FALSE)"
Range("AH2:AH" & LastRow) = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,3,FALSE)"
Range("AI2:AI" & LastRow) = "=VLOOKUP($AF2,'Naming Lookup'!$A$2:$G$10815,4,FALSE)"
'ect

我会这样做:

Sub FillWorksheet1()
    Dim lastRow               As Long
    Dim lCalc                 As XlCalculation

    With Application
        .ScreenUpdating = False
        lCalc = .Calculation
        .Calculation = xlCalculationManual
    End With

    lastRow = Sheets("some other sheet").Range("B" & Rows.Count).End(xlUp).Row

    Range("AF2").Formula = "=firstPart($G2)"
    Range("AG2").Formula = "=MATCH($AF2,'Naming Lookup'!$A$2:$A$10815,0)"
    Range("AH2:AM2").Formula = "=INDEX('Naming Lookup'!B$2:B$10815,$AG2)"
    Range("AF2:AM2").AutoFill Destination:=Range("AF2:AM" & lastRow)
    ActiveSheet.AutoFilterMode = False

    With Application
        .Calculation = lCalc
        .ScreenUpdating = True
    End With

End Sub

我会这样做:

Sub FillWorksheet1()
    Dim lastRow               As Long
    Dim lCalc                 As XlCalculation

    With Application
        .ScreenUpdating = False
        lCalc = .Calculation
        .Calculation = xlCalculationManual
    End With

    lastRow = Sheets("some other sheet").Range("B" & Rows.Count).End(xlUp).Row

    Range("AF2").Formula = "=firstPart($G2)"
    Range("AG2").Formula = "=MATCH($AF2,'Naming Lookup'!$A$2:$A$10815,0)"
    Range("AH2:AM2").Formula = "=INDEX('Naming Lookup'!B$2:B$10815,$AG2)"
    Range("AF2:AM2").AutoFill Destination:=Range("AF2:AM" & lastRow)
    ActiveSheet.AutoFilterMode = False

    With Application
        .Calculation = lCalc
        .ScreenUpdating = True
    End With

End Sub


lastRow
的实际值是多少?另外,我不知道这是否只是一个输入错误,但您缺少了
AH2
AI2
AJ2
AK2
、AL2的双引号。它的变化取决于从数据库中提取的值,因此我尝试将其与列B对齐,因为这是保证包含数据的列。所有
范围(AH2).Formula=..
应该是
范围(“AH2”).Formula=..
.FWIW对于每一行使用一个匹配公式,然后使用多个索引公式,而不是使用多个VLookup,它们必须对每一行查找相同的值6次,这将更加有效。好的,解决了这个问题。现在,我如何使它在一张单独的工作表中的B列长度上运行?lastRow的实际值是多少?另外,我不知道这是否只是一个输入错误,但您缺少了
AH2
AI2
AJ2
AK2
、AL2的双引号。它的变化取决于从数据库中提取的值,因此我尝试将其与列B对齐,因为这是保证包含数据的列。所有
范围(AH2).Formula=..
应该是
范围(“AH2”).Formula=..
.FWIW对于每一行使用一个匹配公式,然后使用多个索引公式,而不是使用多个VLookup,它们必须对每一行查找相同的值6次,这将更加有效。好的,解决了这个问题。现在,我怎样才能使它在一张单独的纸上的B列长度上运行呢?你应该把它们放到。如果单元格被格式化为文本,它将以文本字符串的形式显示公式。您应该将这些内容放入。如果单元格被格式化为文本,它会将公式显示为文本字符串。谢谢Rory,这正是我使用另一张工作表所需的。Rory,据我记忆所及,
。当宏停止运行时,屏幕更新会自动重新打开。除此之外,++@Meehow通常是肯定的,除非您手动结束代码。我的规则是,如果您将其关闭,则显式地将其重新打开。@Rory这可能有点简单,但lCalc部件的作用是什么?@Ben0708它存储当前的计算设置,以便在结束时可以将其恢复。这比假设它应该是自动的要好。谢谢Rory,这正是我使用另一张工作表所需要的。Rory,据我记忆所及,
。当宏停止运行时,屏幕更新会自动重新打开。除此之外,++@Meehow通常是肯定的,除非您手动结束代码。我的规则是,如果您将其关闭,则显式地将其重新打开。@Rory这可能有点简单,但lCalc部件的作用是什么?@Ben0708它存储当前的计算设置,以便在结束时可以将其恢复。这比假设它应该是自动的要好。