Vba 错误400消息-Don';I don’我不知道如何解这个公式
您好,我已经把这个VBA放在一起,通过浏览这个网站上的帖子,它使我能够在一张纸上运行所有值的公式。然而,每次我运行它时,都会收到一条错误消息。我哪里做错了?此外,我如何使用由另一张图纸上的列确定的长度使此vba工作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
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它存储当前的计算设置,以便在结束时可以将其恢复。这比假设它应该是自动的要好。