Forms VBA Excel:如何使一个表单更改另一个表单的位置?

Forms VBA Excel:如何使一个表单更改另一个表单的位置?,forms,excel,vba,Forms,Excel,Vba,我有两种形式,frmPE和frmCRE。它们是模态的 frmCRE有一个按钮“编辑PE”,将打开formPE(frmPE实例)。 如果我不使用这些位置,formPE将以frmCRE顶部为中心打开。 我想把它们并排放置,这样我可以同时看到它们 当我打开frmPE时,我仍然可以看到frmCRE,但不能触摸它。没关系 '此代码位于cmdEditPE中 Set formPE = New frmPE Load formPE If Not formPE.bInitialize(vbFalse) Then E

我有两种形式,frmPE和frmCRE。它们是模态的

frmCRE有一个按钮“编辑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打开时,它使用默认的左设置。从PE内部,我可以看到me.Left=0,即使它是在演出之前设置的

是否有一种方法可以使用formPE.b初始化例程查看frmCRE是否打开,并找出其左侧和宽度,以便正确设置formPE.LEFT,或者有一种方法可以像上面尝试的那样从frmCRE设置它

谢谢
Shari

使用
frmPE
Activae
事件移动自身,但前提是
frmCRE
可见

frmPE中

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

非常感谢。即使没有IF,它也能工作,所以我把它拿了出来。我要花很长时间才能搞清楚这件事。为什么有用?很高兴它有用。我将If放入的原因是,如果frmPE打开而frmCRE关闭,则frmPE不会移动。