2014-01-21 39 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不會被移動。 –

相關問題