2014-01-21 30 views
1

我有两种形式,frmPE和frmCRE。他们是模态的。VBA Excel:如何让一个表单改变另一个表单的位置?

frmCRE有一个“Edit PE”按钮,它将打开formPE(frmPE的实例)。 如果我不玩职位,formPE打开集中在frmCRE的顶部。 我想将它们并排放置,这样我就可以同时看到它们。

当我打开frmPE时,仍然可以看到frmCRE,但没有碰它。没关系。

'这个代码是在cmdEditPE

Set formPE = New frmPE 
Load formPE 
If Not formPE.bInitialize(vbFalse) Then Err.Raise glHANDLED_ERROR 
Me.Left = 100 ' move frmCRE to the left so I can see it 
formPE.Left = Me.Left + Me.Width ' move frmPE to move to the right side of frmCRE (bad) 
formPE.Show 

我认为这个问题是formPE打开时,它使用其默认设置留下。在体育节目内,即使节目在节目之前放映,我也可以看到我。左= 0。

有没有一种方法,我可以使用formPE.bInitialize例程来看到frmCRE是打开的,并找出它的左和宽度,所以我可以正确设置formPE.Left,或者我可以从frmCRE设置它的方式,因为我是试图做到以上?

感谢 莎丽

回答

1

使用frmPEActivae事件本身的移动,但只有当frmCRE是可见的。

frmPE

Private Sub UserForm_Activate() 
    If frmCRE.Visible Then 
     Me.Left = frmCRE.Left + frmCRE.Width 
    End If 
End Sub 
+0

谢谢!即使没有IF,它也能正常工作,所以我把它拿出来了。这将花费我永远找出激活事件。它为什么有效? –

+0

很高兴帮助。我把If的原因是,如果frmPE在frmCRE被关闭时打开,frmPE不会被移动。 –

相关问题