2017-11-11 1 views
0

아래의 코드를 Excel 2016 VBA에서 만들었습니다. 내가 그것을 실행하면오브젝트는 클라이언트와 어떻게 분리됩니까?

Private Sub useridno_AfterUpdate() 

    Dim strMsg As String 
    Dim ret_type As Integer 
    Dim strTitle As String 

    strTitle = "Wrong User ID Number!" 
    strMsg = " Would you like to try again?" 

    If Me.useridno.Value <> 1 Then 
     ret_type = MsgBox(strMsg, vbYesNo + vbCritical, strTitle) 

     Select Case ret_type 
      Case 6 
       Me.useridno.SetFocus 
       Me.useridno.Text = "" 
      Case 7 
       Unload Me 
     End Select 
    End If 

End Sub 

, 그것은 다음과 같은 오류를 반환 : 나는 메시지 상자에 "아니오"버튼을 선택하면

Disconnected to its clients!

이 발생합니다. 이게 왜 그렇게?

+0

데이터 유형을 변형으로 변경합니다. dim ret_type을 정수로 변경합니다. ret_type을 변형으로 – Sixthsense

+0

어떤 종류의 제어가'useridno'입니까? –

+0

@RobinMackenzie, 내 userform에있는 텍스트 상자입니다. –

답변

1

프로젝트의 어느 곳에서 사용자 폼을 표시하는 Show 명령이 있습니다. 그 순간부터 userform이 제어됩니다. Show 명령 다음의 코드는 사용자 정의 폼이 닫힐 때 재개됩니다. @Storax가 지적한대로 명령은 Me.Hide입니다.

코드에 Unload Me이 대신 있습니다. 다른 프로 시저가 Show 명령 다음에 userform을 참조하려고 할 때 오류가 발생합니다. 코드가 양식의 일부 데이터를 읽으려고 시도하거나 무해한 Set UserForm = Nothing 일 수 있습니다. 이미 언로드되어 더 이상 참조 할 수 없습니다.

정확한 방법은 Show 명령 다음에 사용할 양식에서 모든 데이터를 검색 한 후에 호출 프로 시저에서 양식을 언로드하는 것입니다. 그런 다음 폼의 개체 변수를 메모리에서 명시 적으로 해제하려면 그렇게 할 수 있습니다.

+0

고맙습니다. 지금 받으십시오! :) Storax에게도 감사드립니다! –

관련 문제