У меня есть несколько форм, и есть несколько строк кода, используемых для вызова и размещения каждой из них. Вместо того, чтобы реплицировать эти строки кода для каждой формы, я хочу использовать подпрограмму просто для загрузки и размещения формы. Этот код работает:
Sub LoadForm_BulletBeginningEmphasis()
Load formBulletBeginningEmphasis
formBulletBeginningEmphasis.Show
formBulletBeginningEmphasis.StartUpPosition = 0
formBulletBeginningEmphasis.Left = Application.Left + (0.5 * Application.Width) - (0.5 * formBulletBeginningEmphasis.Width)
formBulletBeginningEmphasis.Top = Application.Top + (0.5 * Application.Height) - (0.5 * formBulletBeginningEmphasis.Height)
End Sub
Тем не менее, я хочу, чтобы этот код работал:
Public Sub LoadAndShowForms(ByVal formName As Object)
Load formName
formName.Show
formName.StartUpPosition = 0
formName.Left = Application.Left + (0.5 * Application.Width) - (0.5 * formName.Width)
formName.Top = Application.Top + (0.5 * Application.Height) - (0.5 * formName.Height)
End Sub
Sub LoadForm_BulletBeginningEmphasis()
Call LoadAndShowForms(formBulletBeginningEmphasis)
End Sub
Проблема в том, что когда я выполняю второй набор строк кода, они работают и форма работает, но когда форма исчезает, VBA выдает ошибку:
Что здесь происходит? Почему вторая версия работает, но выдает ошибку?