現在、一連のデータ入力フォームを表示するツールを 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 行に到達するたびに完了せず、メモリに残っているためだと思います。
モードレス フォームはこの問題を回避しますが、ユーザーは他のフォームを読み込んで、重大な問題を引き起こす他のことを行う可能性があります。
これに役立つ提案はありますか?コードの実行を強制するが、フォームのモーダル機能を停止しない方法はありますか?
ロングショットですが、助けていただければ幸いです。