Excel Case Select语法正在创建一个我不想要的循环
我已经编写了一个语法,其中包括case select和一个msgbox。我希望语法能够找到电子表格中的第一个活动单元格,并根据一些预先确定的问题和答案将其移动到A1或A2,但这些命令并没有以最佳方式工作。有人能帮我吗 我希望messagebox根据前面问题的答案直观地弹出,但似乎有一个不幸的消息框以循环结束 我已经附上下面的代码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
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“事实上是这样的,”