2016-10-20 18 views
0

我想保留在應用程序中心的多個表單的位置,表單將是不同的大小,所以下面的FormTop/FormLeft代碼段不能一次又一次地運行同樣的效果。爲此,我使用表單的.top和.left值設置公共變量。保留用戶表單的位置VBA

我收到一個錯誤「對象不支持這個屬性或方法」,這看起來很奇怪,因爲我的印象是,使FormLeft的公式計算爲雙數據類型。這兩行代碼在代碼的第二部分都工作正常,我做錯了什麼?

Public FormTop As Double 
Public FormLeft As Double 

sub main() 
    CentreForm UserForm2 
end sub 

Sub CentreForm(UForm As UserForm) 
    With UForm 
     If FormTop = 0 And FormLeft = 0 Then 
'*********Errors appear on the below two lines****************** 
      FormLeft = Application.Left + (0.5 * Application.Width) - (0.5 * .Width) 
      FormTop = Application.Top + (0.5 * Application.Height) - (0.5 * .Height) 
      Debug.Print FormLeft, FormTop 
     End If 
     .StartUpPosition = 0 
     .Left = FormLeft 
     .Top = FormTop 
    End With 
End Sub 

sub IWork() 
With UserForm2 
    .Left = Application.Left + (0.5 * Application.Width) - (0.5 * .Width) 
    .Top = Application.Top + (0.5 * Application.Height) - (0.5 * .Height) 
end with 
end sub 
+0

該生產線生產的錯誤? –

+0

糟糕,FormLeft和FormTop都產生錯誤的行,我現在會更新... – User632716

+0

你如何調用'CentreForm procedure'? –

回答

1

如果不能解決根據意見建議您的問題,請改變這一行:

Sub CentreForm(UForm As UserForm) 

Sub CentreForm(UForm As Object) 
+0

工作過,感謝 – User632716