В настоящее время я создал инструмент в 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.Show выше, код не завершается и поэтому остается в памяти.
Немодальные формы решили бы эту проблему, но тогда пользователь мог бы загружать другие формы и делать другие вещи, которые вызывали бы серьезные проблемы.
Есть ли у кого-нибудь предложения, чтобы помочь с этим? Как-то заставить выполнение кода, но не остановить модальную способность формы?
Длинный выстрел, но ценю любую помощь.