저는 현재 Excel 2003에서 일련의 데이터 입력 폼을 표시하는 도구를 구축했습니다. 고객은 양식에 "이전 양식"및 "다음 양식"단추가 있어야한다고 요청했습니다.사용자 폼에서 사용자 폼을 반복해서 열면 개체 문제가 발생합니다.
Sub NextForm(strFormName As String)
Dim intCurPos As Integer
Dim strNewForm As String
'Find out which form we are currently on from a list in a range
intCurPos = WorksheetFunction.Match(strFormName, Range("SYS.formlist"), 0)
If intCurPos = WorksheetFunction.CountA(Range("SYS.formlist")) Then
'We want to use the first one
intCurPos = 0
End If
'Get the name of the form to open
strNewForm = WorksheetFunction.Index(Range("SYS.formlist"), intCurPos + 1)
'Load the form into the Userforms Collection
Set newForm = VBA.UserForms.Add(strNewForm)
'Show the form
newForm.Show
End Sub
난 당신이 25 시간을 수행 한 후 (그래 내가 아는)이다 시스템 충돌이 문제를 다음과 같이
형태 사이를 이동하는 데 사용되는 코드입니다. 나는 이것이 당신이 newForm에 도착할 때마다 발생한다는 것을 깨닫는다. 코드 위의 줄은 완료되지 않고 메모리에있다.
모덜리스 양식은이 문제를 중지하지만 사용자는 다른 양식을로드하고 중요한 문제를 일으킬 수있는 다른 작업을 수행 할 수 있습니다.
누구에게 도움이되는 제안이 있습니까? 어떻게 든 코드 실행을 강요하지만 폼의 모달 능력을 멈추게하지는 않습니까?
롱샷이지만 어떤 도움을 주셔서 감사합니다.
25 개의 양식을 모두 열어야합니까? 양식을 내린 다음 다음 양식을 열어 보았습니까? – CaBieberach
사용자 폼에서 MultiPage 컨트롤을 사용하는 것을 고려 했습니까? 하나의 userform을로드하고 Next 및 Back을 사용하여 MultiPage의 탭을 순환하십시오. –
@CaBieberach : 다음 폼이 열리기 전에 각 폼이 언로드됩니다. 그러나 양식 1에 대해 처리가 중단 된 코드 포인트는 메모리에 남아 있으며 나머지 24 개에도 계속 남아 있습니다. Excel이 코드를 실행하기 위해 되돌아가는 최종 양식이 닫힐 때만입니다 (이 경우에는 그냥 Exit Sub 임) . –