长命令会在Excel中引发错误

时间:2013-11-23 06:52:12

标签: excel-vba vba excel

我记录了一个没有任何问题的VBA代码,但是现在当我尝试使用具有相同数据的VBA代码时,我得到了这个编译错误:

  syntax errorIF公式中的

OR

我认为代码的长度是造成错误的原因。

这是我录制时写的公式:

  

= IF(OR(B20 =“(结果数= 1)”,B19 =“(结果数= 1)”,B18 =“(结果数= 1)”,B17 =“(数量)结果=   1)“,B16 =”(结果数= 1)“,B15 =”(结果数=   1)“,B14 =”(结果数= 1)“,B13 =”(结果数=   1)“,B12 =”(结果数= 1)“,B11 =”(结果数=   1)“,B10 =”(结果数= 1)“,B9 =”(结果数=   1)“,B8 =”(结果数= 1)“,B7 =”(结果数=   1)“,B6 =”(结果数= 1)“,B5 =”(结果数=   1)“,B4 =”(结果数= 1)“,B3 =”(结果数=   1)“,B2 =”(结果数= 1)“),”真“,”F“)

这是录制代码的一部分(它是一个很长的VBA代码所以我只是复制了上面突出显示的问题的部分(黄色))。

ActiveWindow.ScrollRow = 1
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B33").Select
Columns("A:A").ColumnWidth = 26
ActiveWindow.SmallScroll Down:=-63
Range("A1").Select
Application.FormulaBarHeight = 7
ActiveCell.FormulaR1C1 = _
"=IF(OR(R[19]C[1]=""(Number of Results = 1)"",R[18]C[1]=""(Number of Results =   1)"",R[17]C[1]=""(Number of Results = 1)"",R[16]C[1]=""(Number of Results = 1)"",R[15]C[1]=""(Number of Results = 1)"",R[14]C[1]=""(Number of Results = 1)"",R[13]C[1]=""(Number of Results = 1)"",R[12]C[1]=""(Number of Results = 1)"",R[11]C[1]=""(Number of Results = 1)"",R[10]C[1]=""(Number"& _
"lts = 1)"",R[9]C[1]=""(Number of Results = 1)"",R[8]C[1]=""(Number of Results = 1)"",R[7]C[1]=""(Number of Results = 1)"",R[6]C[1]=""(Number of Results = 1)"",R[5]C[1]=""(Number of Results = 1)"",R[4]C[1]=""(Number of Results = 1)"",R[3]C[1]=""(Number of Results = 1)"",R[2]C[1]=""(Number of Results = 1)"",R[1]C[1]=""(Number of Results = 1)""),""True"",""F"")""& _
"k
Range("A2").Select
Application.FormulaBarHeight = 1
Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A202")
Range("A1:A202").Select

1 个答案:

答案 0 :(得分:0)

您正在使用宏录制器,它可以为您提供所需的代码,但是当您有一长串公式时会出现错误代码;就像ActiveCell.FormulaR1C1 =之后的那样,所以你应该手动编辑它。

  

注意:
  Excel单元格中的公式与VBA代码中的公式不同!!!

可以出现在该行代码前面的最大字符串是这样的:

ActiveCell.FormulaR1C1 = "=""" + String(255, "#") + """"

并且

ActiveCell.FormulaR1C1 = "=""" + String(256, "#") + """"

将返回此错误:

  

运行时错误'1004':
  应用程序定义或对象定义的错误

嗯,我建议的唯一解决办法就是改变和减少你的公式字符串,对你而言,我建议使用这个公式:

=IF(IFERROR(VLOOKUP("(Number of Results = 1)";B:B;1;0);"Err") = "Err"; "F"; "True")