我有一个窗体类UserForm1,上面有一个按钮CommandButton1,Private Sub CommandButton1_Click()
    Dim f1 As UserForm1
    Dim str As String
    Set f1 = New UserForm
    f1.Show
End Sub这样递归可以产生多个UserForm1,我如何才能知道窗体上的按钮属于哪个窗体(根据按钮得到按钮所在的窗体)?

解决方案 »

  1.   

    Private Sub CommandButton1_Click()
        msgbox me.hwnd'根据句柄可以知道是哪个窗口呀
    End Sub
      

  2.   

    兄弟们,还有其他方式吗?
    我是在Excel的vba里的窗体,在vba里 me没有hwnd这个属性。真的没有,每次都出错,所以我才会说难。
      

  3.   

    Private Sub CommandButton1_Click()
    MsgBox CommandButton1.Parent.Caption
    End Sub
      

  4.   

    使用Parent 属性
                            
    用于返回包含指定控件、对象或集合的窗体、对象或集合的名字。
      

  5.   

    可以考虑对每个窗体进行编号,创建一个全局变量作为计数器,每次创建新的窗体的时候该计数器加一并且f1.Caption = f1.Caption & count 这样,你的每个窗体的caption就都不一样了,按钮事件中可以检测me.Caption属性确定所属的窗体。如果你不喜欢让别人看到你做的计数也可以用visibel属性为false的其它控件来标志窗体编号。
      

  6.   

    //如何才能知道窗体上的按钮属于哪个窗体根据按钮的Parent属性不就可以了吗?真奇怪???
      

  7.   

    兄弟们,现在的问题是,我Set f1 = New UserForm,产生新窗体后,我如何关闭这个窗体,除了点击窗体有上角X外,我用f1.close方法,出错,说f1没有这个方法,
    我用unload f1,也出错,如何处理?
      

  8.   

    我也遇到类似的问题。我在窗体的tag属性里+了1个唯一的标示,然后用了一个集合遍历
    On Error Resume Next
    Dim I As Integer   For I = 0 To Forms.Count - 1
    '
            If Forms(I).tag= Text1 Then
                Unload Forms(I)
                Exit Sub
            End If
       Next I
      

  9.   

    在窗体内使用unload me,在外部使用unload activeform
    当然没有close方法了.
      

  10.   

    ==============================
    兄弟们,现在的问题是,我Set f1 = New UserForm,产生新窗体后,我如何关闭这个窗体,除了点击窗体有上角X外,我用f1.close方法,出错,说f1没有这个方法,
    我用unload f1,也出错,如何处理?
    ========================================
    注意你的代码:
    ==========
    Private Sub CommandButton1_Click()
        Dim f1 As UserForm1
        Dim str As String
        Set f1 = New UserForm1
        f1.Show
    End Sub
    =========
    基本的变量作用域问题,如果你不是在CommandButton1_Click()中使用unload f1,那样肯定会出错的解决方法正如楼上两位所说:
    1、在UserForm1中调用unload me方法;
    2、使用ActiveForm
    If Screen.ActiveForm.Caption = "Form1" Then  '"Form1" 为你所要显示的窗口的Caption
        Unload Screen.ActiveForm
    End If
      

  11.   

    利用parent属性来获取所在窗体。