Excel宏-请解释此代码 如果数据\u版本

Excel宏-请解释此代码 如果数据\u版本,excel,excel-2003,vba,Excel,Excel 2003,Vba,严格来说,它没有任何作用,因为您有一个尾随End If,它与前面的If不匹配。但是 它查看工作表中称为“人员”的连续行,从第5行开始,当发现第一列中没有任何内容时停止。对于每一行,它都会查找编号在变量ResumeFile中的列。如果那里除了空白什么都没有,它会将其完全清除。否则,它将丢弃前两个字符,并将其余字符插入到神奇字符串过程中!B$18&“值在这里”,它将其存储(作为公式)到同一单元格中。这里,&执行字符串连接 最后,出于某种原因,它选择单元格A1 因此,如果工作表的该列之前包含“Fred

严格来说,它没有任何作用,因为您有一个尾随
End If
,它与前面的
If
不匹配。但是

它查看工作表中称为“人员”的连续行,从第5行开始,当发现第一列中没有任何内容时停止。对于每一行,它都会查找编号在变量
ResumeFile
中的列。如果那里除了空白什么都没有,它会将其完全清除。否则,它将丢弃前两个字符,并将其余字符插入到神奇字符串
过程中!B$18&“值在这里”
,它将其存储(作为公式)到同一单元格中。这里,
&
执行字符串连接

最后,出于某种原因,它选择单元格A1


因此,如果工作表的该列之前包含“Fred”、“Jim”和“Sheila”,并且“Process”工作表的单元格B18包含“Boo!”,那么您将得到“Boo!ed”、“Boo!m”和“Boo!eila”。

而没有看到它应该操作的电子表格的单元格格式和解释(以及语义),这很难解释。显然,有一个名为“People”的工作表,它从第5行开始,但我假设变量“ResumeFile”设置在此例程之外,并引用工作表中的一个特定列,您希望在每一行中对该列进行处理,直到在第一列中找到一个单元格为空的行。这会有什么作用?它似乎链接了来自不同工作表的数据。刚刚编辑了代码。请再次查看。谢谢!好的,我又看了一遍。我认为对我所说的内容所做的更改的唯一区别是,不再有不匹配的尾随
End If
。但是流程表中的B18有serverpathNo,在代码开头的任何表中(可能是称为“process”的表,但代码中没有任何东西可以保证)都有空字符串。还是我对
范围(“B18”)=“
的效果感到困惑?(我现在手头没有方便的Excel副本。)
If data_version < 2.11 Then
        Range("A10").Select
        Selection.Copy
        Range("A17").Select
        ActiveSheet.Paste
        ActiveCell.FormulaR1C1 = "Resume Path Information"

        Range("A12:B12").Select
        Selection.Copy
        Range("A18").Select
        ActiveSheet.Paste
        ActiveCell.FormulaR1C1 = "Server Path:"
        Range("B18") = ""

        Dim formula As String
        Dim cu_row As Integer     

         cu_row = 5
            Do
                'Fix cell to add resume server path
                If Len(Trim(Worksheets("People").Cells(cu_row, ResumeFile).Value)) > 0 Then
                    formula = "=Process!B$18 & """ & Right(Worksheets("People").Cells(cu_row, ResumeFile).Value, Len(Worksheets("People").Cells(cu_row, ResumeFile).Value) - 2) & """"
                    Worksheets("People").Cells(cu_row, ResumeFile).formula = formula

                'Else be sure it is blank
                Else
                    Worksheets("People").Cells(cu_row, ResumeFile).ClearContents
                End If

                cu_row = cu_row + 1

            Loop Until Worksheets("People").Cells(cu_row, 1) = ""
            Range("A1").Select
        End If