具有多个ifs的VBA循环无法编译,不知道为什么



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

我正在浏览代码,用F8命令调试,并在末尾遇到了循环命令的问题。我会得到一个"无需做的循环"编译错误,并带有"循环",直到"末端"由Excel突出显示。

这是应该做的:

  • " jcx"(10,attributerowcounter)和" 08-attribute"(1,attributerowcounter)应匹配,并控制" jcx" 08-attribute"中的哪一行(11,attributerowcounter"值去。

  • " 08-attribute"(9,attributerowcounter)值控制" jcx"中的哪个列将" 08-attribute"(11,attributerowcounter)放置。

  • 如果" 08-attribute"中有一个值列表(1,attributerowcounter),称为ahu-2,则在" 08-attribute"(9,attributerowcounter)中具有相应的值列表为" cfmlat,rpm和sp",然后在" 08-attribute"(11,属性)中使用CFM(9,attributerowcounter)中的值在" jcx"(14,tagnumberrow)中。

  • " 08-attribute"(11,attributerowcounter)中的值(9,attributerowcounter)在" jcx"(16,tagnumberrow)中。

  • " 08-attribute"(11,attributerowcounter)中的值(9,attributerowcounter)在" jcx"(15,tagnumberrow)中。

  • 如果在" 08-attribute"(11,attributerowcounter)中有一个值,该值以外的内容(9,sp,rpm和Motor hp"(9,attributerowcounter),则在(然后是(然后是)中值(11,attributerowcounter)在" jcx"(21,tagnumberrow)中,而(9,attributerowcounter)中的值则为" jcx"(20,tagnumberrow)。

  • 上一个先前的语句循环,要加载任何其他非" CFM,sp,rpm和电动机HP"值,然后根据需要跳过(names1,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

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

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
            End If 'new
        End With 'new
    End With 'new
Loop Until Cells(1, attributerowcounter) = False

底部附近的三条线在末端具有'new,以关闭If块和两个With块。

相关内容

最新更新