VBA复制IF值等于

时间:2013-08-07 15:33:03

标签: excel-vba excel-2013 vba excel

我想知道是否有人可以帮助我。

首先,我是第一个承认,我已经获得了帮助以获得这个阶段,但我有点不确定是否已经解决了以下代码的问题。

给一点背景:

我正在尝试做的是执行检查代码查看工作表列表“AllData”(源)表,从单元格E3开始,并复制单元格(如果它包含文本值) “增强功能”并将其粘贴到“增强功能”(目的地)表。

此外,该代码还采用与每个项目相关联的“实际”工时图和日期,并按项目和周期将工时总计分配到目标工作表(增强工作表)上的相应单元格中。这些是“RVal”和“RDate”变量。

修订代码 - 完整工作脚本

    Sub Extract()
    Dim i As Long, j As Long, m As Long
    Dim strProject As String
    Dim RDate As Date
    Dim RVal As Single
    Dim BlnProjExists As Boolean
    With Sheets("Enhancements").Range("B3")
    For i = 1 To .CurrentRegion.Rows.Count - 1
        For j = 0 To 13
            .Offset(i, j) = ""
        Next j
    Next i
End With
With Sheets("AllData").Range("E3")
    For i = 1 To .CurrentRegion.Rows.Count - 1
    strProject = .Offset(i, 0)
    If InStr(strProject, "Enhancements") = 0 Then
        GoTo NextLoop
    End If
        RDate = .Offset(i, 3)
        RVal = .Offset(i, 4)
        With Sheets("Enhancements").Range("B3")
            If .CurrentRegion.Rows.Count = 1 Then
                .Offset(1, 0) = strProject
                j = 1
            Else
                BlnProjExists = False
                For j = 1 To .CurrentRegion.Rows.Count - 1
                    If .Offset(j, 0) = strProject Then
                        BlnProjExists = True
                        Exit For
                    End If
                Next j
                If BlnProjExists = False Then
 .Offset(j, 0) = strProject
                End If
            End If
            Select Case Format(RDate, "mmm yy")
                Case "Apr 13"
                    m = 1
                Case "May 13"
                    m = 2
                Case "Jun 13"
                    m = 3
                Case "Jul 13"
                    m = 4
                Case "Aug 13"
                    m = 5
                Case "Sep 13"
                    m = 6
                Case "Oct 13"
                    m = 7
                Case "Nov 13"
                    m = 8
                Case "Dec 13"
                    m = 9
                Case "Jan 14"
                    m = 10
                Case "Feb 14"
                    m = 11
                Case "Mar 14"
                    m = 12
            End Select
            .Offset(j, m) = .Offset(j, m) + RVal
        End With
NextLoop:
    Next i
End With
End Sub

不幸的是,当我尝试运行它时,我收到一个'编译错误:标签未定义'错误,并且调试突出显示以下行作为问题,我不确定原因:

GoTo Nexti

我只是想知道是否有人可以看看这个,让我知道我哪里出错了?

如果有帮助,我可以提供指向我的测试文件的链接。

非常感谢和亲切的问候

1 个答案:

答案 0 :(得分:0)

当值为"增强功能"时,您没有做任何不同的事情。改变这个:

    If InStr(.Offset(i, 0), "Enhancements") > 0 Then
        strProject = .Offset(i, 0)
    End If

到此:

    If InStr(strProject, "Enhancements") = 0 Then
        GoTo NextLoop
    End If

并在" Next i":

之前添加NextLoop标识符
        End With
NextLoop:
    Next i
End With
End Sub