Excel宏 - 请解释此代码

时间:2011-03-14 15:45:44

标签: excel excel-vba excel-2003 vba

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

1 个答案:

答案 0 :(得分:0)

嗯,严格来说它没有做任何事情,因为你的尾随End If与之前的任何If都不匹配。但是......

它查看名为“People”的工作表的连续行,从第5行开始,当它在第一列中找不到任何内容的行时停止。对于每一行,它会查找其编号为变量ResumeFile的列。如果那里只有空格,它就会完全清除它。否则,它抛弃前两个字符,并将其余字符插入到魔术字符串Process!B$18 & "VALUE_GOES_HERE"中,并将其存储(作为公式)到同一个单元格中。这里,&执行字符串连接。

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

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