具有多个ifs的VBA循环将无法编译,不确定为什么

时间:2017-12-08 13:17:22

标签: excel vba excel-vba loops excel-2010

我正在尝试将一张纸上的两列数据重新排列到另一张纸上的行中,由第一张纸上的列控制。

我正在浏览代码,使用F8命令对其进行调试,并在最后遇到循环命令的问题。我得到一个“Loop without Do”编译错误,最后用Excel突出显示“Loop Until”。

这是它应该做的:

  • “JCX”(10,AttributeRowCounter)单元格和“08-Attribute”(1,AttributeRowCounter)应匹配,并控制“JCX”中哪一行为“08-Attribute”(11,AttributeRowCounter)值去。

  • “08-Attribute”(9,AttributeRowCounter)值控制“JCX”中的哪一列放置“08-Attribute”(11,AttributeRowCounter)值。

  • 如果在名为AHU-2的“08-Attribute”(1,AttributeRowCounter)中有一个值列表,则“08-Attribute”(9,AttributeRowCounter)中相应的值列表为“CFM,EAT, LAT,RPM和SP“,那么”08-Attribute“(11,AttributeRowCounter)中的值与(9,AttributeRowCounter)中的CFM一起进入”JCX“(14,TagNumberRow)。

  • “08-Attribute”(11,AttributeRowCounter)中的值(9,AttributeRowCounter)中的值为“JCX”(16,TagNumberRow)。

  • “08-Attribute”(11,AttributeRowCounter)中SP(9,AttributeRowCounter)中的值进入“JCX”(15,TagNumberRow)。

  • 如果“08-Attribute”(11,AttributeRowCounter)中的值与(9,AttributeRowCounter)中的“CFM,SP,RPM和Motor HP”不同,则值为( 11,AttributeRowCounter)进入“JCX”(21,TagNumberRow),(9,AttributeRowCounter)中的值进入“JCX”(20,TagNumberRow)。

  • 上一个语句循环,将任何其他非“CFM,SP,RPM和Motor HP”值加载到右侧的下一列,根据需要跳过(Name1,Value1,Name2,Value2,Name3) ,Value3等)。

有人知道发生了什么事吗?

'Tag Values
Do
    With Sheets("08-Attribute")
    Copy.Range("9,AttributeRowCounter").Value
    Application.WorksheetFunction.VLookup((Sheets("JCX").Cells(10, AttributeRowCounter)), (Sheets("08-Attribute").Cells(1, AttributeRowCounter)), True).Value
    With Sheets("08-Attribute")
If "9,AttributeRowCounter" = "CFM" Then
    .Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("14,TagNumberRow").Value
    ElseIf "9" = "SP" Then
    .Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("15,TagNumberRow").Value
    ElseIf "9" = "RPM" Then
    .Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("16,TagNumberRow").Value
    ElseIf "9" = "Motor_HP" Then
    .Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("17,TagNumberRow").Value
    Else
    .Range("9,AttributeRowCounter").Value = Sheets("JCX").Range("20,TagNumberRow").Value
    TagValueNameColumn = TagValueNameColumn + 2
    .Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("21,TagNumberRow").Value
    TagValueNameColumn = TagValueNameColumn + 2
    Loop Until Cells(1, AttributeRowCounter) = False

1 个答案:

答案 0 :(得分:6)

如果缩进,问题会变得更加清晰。

'new

关闭If块和两个With块需要在底部附近有index的三条线。