Excel Case Select语法正在创建一个我不想要的循环

Excel Case Select语法正在创建一个我不想要的循环,excel,vba,select,case,goto,Excel,Vba,Select,Case,Goto,我已经编写了一个语法,其中包括case select和一个msgbox。我希望语法能够找到电子表格中的第一个活动单元格,并根据一些预先确定的问题和答案将其移动到A1或A2,但这些命令并没有以最佳方式工作。有人能帮我吗 我希望messagebox根据前面问题的答案直观地弹出,但似乎有一个不幸的消息框以循环结束 我已经附上下面的代码 Public Sub SurvAnalysis() Dim InpSh As Worksheet Dim fCell As Range Dim

我已经编写了一个语法,其中包括case select和一个msgbox。我希望语法能够找到电子表格中的第一个活动单元格,并根据一些预先确定的问题和答案将其移动到A1或A2,但这些命令并没有以最佳方式工作。有人能帮我吗

我希望messagebox根据前面问题的答案直观地弹出,但似乎有一个不幸的消息框以循环结束

我已经附上下面的代码

Public Sub SurvAnalysis()

    Dim InpSh As Worksheet
    Dim fCell As Range
    Dim msg1 As String, msg2 As String
    Dim Ans1 As Variant, Ans2 As Variant

    Set InpSh = ThisWorkbook.Worksheets("Input")

    msg1 = "Are these headers included in the Data, and is the data in the correct format? { Dob ∏ StartDate ∏ End Date }"
    Ans1 = MsgBox(msg1, vbYesNoCancel, " Data type")

    Select Case Ans1
        Case vbYes
            On Error Resume Next
            Set fCell = InpSh.Cells.Find(What:="*", _
                                        After:=InpSh.Cells(Rows.Count, Columns.Count), _
                                        LookAt:=xlPart, _
                                        LookIn:=xlFormulas, _
                                        SearchOrder:=xlByRows, _
                                        SearchDirection:=xlNext, _
                                        MatchCase:=False)
            On Error GoTo 0
            If fCell Is Nothing Then
                MsgBox "All cells are blank."
            Else
                fCell.CurrentRegion.Cut Destination:=InpSh.Range("A1")
            End If
            GoTo Quit:

        Case vbCancel
            MsgBox ("Get your data sorted out")
            GoTo Quit:

        Case vbNo
            GoTo Option2:
    End Select

Quit:
Option2:

    msg2 = "Are the data in the correct manner and do you wish for us to include the headers on your behalf?"
    Ans = MsgBox(msg2, vbYesNo, "Sort Data")

    Select Case Ans
        Case vbYes
            Set fCell = InpSh.Cells.Find(What:="*", _
                                        After:=InpSh.Cells(Rows.Count, Columns.Count), _
                                        LookAt:=xlPart, _
                                        LookIn:=xlFormulas, _
                                        SearchOrder:=xlByRows, _
                                        SearchDirection:=xlNext, _
                                        MatchCase:=False)
            If fCell Is Nothing Then
                MsgBox "All cells are blank."
            Else
                fCell.CurrentRegion.Cut Destination:=InpSh.Range("A2")
                InpSh.Range("A1").Value = " Dob"
                InpSh.Range("B1").Value = " StartDate"
                InpSh.Range("C1").Value = " End Date"
            End If
        Case vbNo
            MsgBox ("Get your data sorted out")
            GoTo Quit:
    End Select
End Sub

您的goto结束语句
Quit:
应该在最末尾。在代码中,当它转到
Quit:
时,它将继续并处理它下面的所有代码行。这也是一个一般的经验法则,这可能是一种观点,但通常您可以在不使用任何
goto
语句的情况下始终正确地编写代码。它们造成的问题比它的价值还多。看看你是否可以不使用任何
goto
语句来编写逻辑,你就可以生活下去了。

你的goto结束语句
Quit:
应该在最末尾。在代码中,当它转到
Quit:
时,它将继续并处理它下面的所有代码行。这也是一个一般的经验法则,这可能是一种观点,但通常您可以在不使用任何
goto
语句的情况下始终正确地编写代码。它们造成的问题比它的价值还多。看看你是否可以不用任何
goto
语句来编写你的逻辑,然后你就可以生活下去了。

请阅读>[为什么“有人能帮我吗?”不是一个实际的问题?](问题)我认为这个问题是合理的。OP清楚地说明了他们遇到的问题,但不知道为什么。谢谢R.Roe。我问一个问题是因为我不知道如何找出我想要实现的目标,而在编程页面上充满哲理是相当琐碎的大卫。请阅读>[为什么“有人能帮我吗?”不是一个实际的问题?](问题)我认为这个问题是合理的。OP清楚地说明了他们遇到的问题,但不知道为什么。谢谢R.Roe。我问一个问题是因为我不知道如何找出我想要实现的目标,而在编程页面上充满哲理是相当小气的david。如果你认为答案回答了你的问题,请确保你将其标记为答案。嗨,R.Roe,即使我排除了goto语句“有条件的”即使不满足这些条件,msgbox仍然会弹出。您是否将
option2
的所有代码移到您案例陈述中调用
option2 goto
陈述的位置?否则它将始终执行
option2的代码。我改为使用if语句修复了它。事实上,一切都很顺利,不过谢谢你again@KokoEtokebe“事实上,它解决了,”如果你认为它回答了你的问题,请确保你将其标记为答案。嗨,R.罗,即使在我排除了goto陈述“有条件的”即使不满足这些条件,msgbox仍然会弹出。您是否将
option2
的所有代码移到您案例陈述中调用
option2 goto
陈述的位置?否则它将始终执行
option2的代码。我改为使用if语句修复了它。事实上,一切都很顺利,不过谢谢你again@KokoEtokebe“事实上是这样的,”