2016-10-20 52 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