2016-12-16 21 views
0

私が使用しているコード全体が非常に長いので、スペースを節約するために最初のサブを省略しています。この例では、「New York University」、「NYU」、または「New York Univ」の場合は、列Oにある場合は、別のSelect Caseルーチンを含むボタンを持つユーザーフォームが表示されます。しかし、frmNYUのuserformから呼び出されたSubを実行すると、最初のFillIn Subでケースを実行し続ける必要があります。VBA - ユーザーフォーム内で別のSelect Caseを呼び出した後にSelect Caseを再開する

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ユーザーフォームのボタンの1つのサブです。

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の実行が再開されないという問題があります。私は間違って何をしていますか?

答えて

2

コマンドボタンのコードで "End Sub"行の前に "End"行を削除します。 "End"を指定すると、すべてのコードの実行が停止します。

+0

さて、私はそこに "End"を入れてループを止めました。それがなければ、元のSubで見つかった一致ごとにユーザーフォームがポップアップ表示されます。 – Robby

+2

それが、FillInでコードを再開しない理由です。ユーザーフォームは毎回ポップアップしています。これはコードが書かれている方法であるからです。 Forループ内でユーザーフォームを表示しています。 –

+0

私はそれを理解していますが、それを実現するためにはどのような変更が必要ですか?私は 'On Error Resume Next'を使用しようとしましたが、それは助けになりません。 – Robby