VBA – 在用户窗体中调用另一个Select Case后,继续Select Case

我使用的整个代码非常长,所以为了节省空间,我简化了第一个子代码。 在这个例子中,如果“纽约大学”,“纽约大学”或“纽约大学” 在列O中,它显示了一个用户窗体,其中包含另一个Select Case例程的button。 但是一旦运行了从frmNYU用户窗体调用的Sub,它就需要继续在第一个FillIn子窗体中运行这些窗体。

Sub FillIn() Dim LastRow As Long Dim i As Long LastRow = Range("O" & Rows.Count).End(xlUp).Row For i = 84 To LastRow If Range("K" & i) Like "B*" Or Range("K" & i) Like "M*" Or Range("K" & i) Like "D*" Then Select Case Range("O" & i) Case "University of Florida" Range("N" & i) = "0761" Case "University of North Texas" Range("N" & i) = "1612" Case "New York University", "NYU", "New York Univ." frmNYU.Show End Select End If End Sub 

这里是frmNYU用户窗体上的其中一个button的Sub。

 Private Sub CommandButton1_Click() On Error GoTo Terminate Dim LastRow As Long Dim i As Long LastRow = Range("O" & Rows.Count).End(xlUp).Row For i = 84 To LastRow If Range("K" & i) Like "B*" Or Range("K" & i) Like "M*" Or Range("K" & i) Like "D*" Then Select Case Range("O" & i) Case "New York University", "NYU", "New York Univ." Range("N" & i) = "1234" End Select End If Next i Terminate: Unload Me End End Sub 

问题是一旦从用户窗体内运行Select Case,它不会恢复运行原始的FillIn Sub。 我究竟做错了什么?

删除命令button代码中“End Sub”行之前的“End”行。 “结束”会导致您的所有代码停止运行。

在你的所有模块的顶部写一个option explict是一个好主意,然后像这样编译它:

在这里输入图像说明

编译之后,你会得到错误的信息(或者至less会被高亮)。