我找不到变量时该如何处理

时间:2019-07-17 17:40:47

标签: excel vba find

我写了一些代码,目的是在工作表“ main”上循环,从C列(Reg)中的单元格获取值,然后根据首字母移动到相关选项卡B列中相应单元格的名称。但是,有时(Reg)在其他任何选项卡上都不存在,当在其他任何相应选项卡中找不到(reg)时,我也无法解决该问题。< / p>

我尝试过在下一个错误goto上使用,但是当它从我不想让它查看的单元格中取回值时,最终只会在Loop中引起更多问题。我的VB实际上是基本的,所以我不确定如何更好地处理它,因为我的代码中有很多.select,而且我被告知我不应该使用它。

Sub comments_chase()

Dim comment, chase As String
Dim Reg As String
Dim reg_add As String
Dim Foundrange As String



Application.ScreenUpdating = False



    Workbooks("Progression chases.xlsm").Activate

    Worksheets("main").Activate



    Range("C4").Select



    Do Until ActiveCell.Value = ""

    reg_add = ActiveCell.Address

    Reg = ActiveCell.Value

    ActiveCell.Offset(0, -1).Select



    On Error GoTo Error_step



    If Left(ActiveCell.Value, 1) = "L" Or Left(ActiveCell.Value, 1) = "M" Or Left(ActiveCell.Value, 1) = "N" Or Left(ActiveCell.Value, 1) = "O" Or Left(ActiveCell.Value, 1) = "P" Or Left(ActiveCell.Value, 1) = "Q" Then

    Worksheets("Adie").Activate

    Set Foundrange = Range("C:C").Find(Reg, LookAt:=xlWhole).Select

        If Foundrange Is Nothing Then

        GoTo Error_step

        Else

    ActiveCell.Offset(0, 11).Select

    comment = ActiveCell.Value

    ActiveCell.Offset(0, 1).Select

    chase = ActiveCell.Value

    Workbooks("Progression chases.xlsm").Activate

    Worksheets("main").Activate

    Range("C:C").Find(Reg, LookAt:=xlWhole).Select

    ActiveCell.Offset(0, 11).Select

    ActiveCell.Value = comment

    ActiveCell.Offset(0, 1).Select

    ActiveCell.Value = chase

    End If



    On Error GoTo Error_step



        ElseIf Left(ActiveCell.Value, 1) = "A" Or Left(ActiveCell.Value, 1) = "B" Or Left(ActiveCell.Value, 1) = "C" Then

        Worksheets("Andy").Activate

    Set Foundrange = Range("C:C").Find(Reg, LookAt:=xlWhole).Select

    If Foundrange Is Nothing Then

    GoTo Error_step

    Else

        ActiveCell.Offset(0, 11).Select

        comment = ActiveCell.Value

        ActiveCell.Offset(0, 1).Select

        chase = ActiveCell.Value

        Workbooks("Progression chases.xlsm").Activate

        Worksheets("main").Activate

        Range("C:C").Find(Reg, LookAt:=xlWhole).Select

        ActiveCell.Offset(0, 11).Select

        ActiveCell.Value = comment

        ActiveCell.Offset(0, 1).Select

        ActiveCell.Value = chase

        End If



On Error GoTo Error_step

            ElseIf Left(ActiveCell.Value, 1) = "D" Or Left(ActiveCell.Value, 1) = "E" Or Left(ActiveCell.Value, 1) = "F" Or Left(ActiveCell.Value, 1) = "G" Or Left(ActiveCell.Value, 1) = "H" Or Left(ActiveCell.Value, 1) = "J" Or Left(ActiveCell.Value, 1) = "K" Then

            Worksheets("Georgia").Activate

    Set Foundrange = Range("C:C").Find(Reg, LookAt:=xlWhole).Select

    If Foundrange Is Nothing Then

    GoTo Error_step

    Else

            ActiveCell.Offset(0, 11).Select

            comment = ActiveCell.Value

            ActiveCell.Offset(0, 1).Select

            chase = ActiveCell.Value

            Workbooks("Progression chases.xlsm").Activate

            Worksheets("main").Activate

            Range("C:C").Find(Reg, LookAt:=xlWhole).Select

            ActiveCell.Offset(0, 11).Select

            ActiveCell.Value = comment

            ActiveCell.Offset(0, 1).Select

            ActiveCell.Value = chase

            End If



On Error GoTo Error_step

                ElseIf Left(ActiveCell.Value, 1) = "R" Or Left(ActiveCell.Value, 1) = "S" Or Left(ActiveCell.Value, 1) = "T" Or Left(ActiveCell.Value, 1) = "U" Or Left(ActiveCell.Value, 1) = "V" Or Left(ActiveCell.Value, 1) = "W" Or Left(ActiveCell.Value, 1) = "(" Or Left(ActiveCell.Value, 1) = "[" Or Left(ActiveCell.Value, 1) = "*" Then

                Worksheets("Leona").Activate

    Range("C:C").Find(Reg, LookAt:=xlWhole).Select

    Foundrange = ActiveCell.Value

    If Foundrange Is Nothing Then

    GoTo Error_step

    Else

                ActiveCell.Offset(0, 11).Select

                comment = ActiveCell.Value

                ActiveCell.Offset(0, 1).Select

                chase = ActiveCell.Value

                Workbooks("Progression chases.xlsm").Activate

                Worksheets("main").Activate

                Range("C:C").Find(Reg, LookAt:=xlWhole).Select

                ActiveCell.Offset(0, 11).Select

                ActiveCell.Value = comment

                ActiveCell.Offset(0, 1).Select

                ActiveCell.Value = chase



            End If

Error_step:  Worksheets("main").Activate



            Worksheets("main").Activate

           Range(reg_add).Select

           ActiveCell.Offset(1, 0).Select

           End If



    Loop



End Sub

上面的代码有2次稍微不同的尝试来处理它。展示我的尝试

我收到运行时错误424对象,并且在调试时它在块引用表(“ Leona”)中的“ If Foundrange Nothing Then”处停止

理想情况下,如果一切正常,我希望它在工作表(“ Leona”)上找到(Reg)并带回Comment和Chase中的值,然后将其放入工作表(Main)的相关单元格中< / p>

有人可以帮我解决问题吗?

0 个答案:

没有答案