for i=0 to forms.cont-1
    if forms(i).name=objname then forms(i)
next i

解决方案 »

  1.   

    不知道为何你要这样做?
    不过你不可以麻烦一点吗?
    if sobjname=*** then
       XX.show
    elseif sobjname=*** then
       XX.show
    .....
    else
       msgbox("这样不行吗?")
    endif
      

  2.   

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Private Const SW_SHOW = 5ShowWindow(FindWindow("",sObjName,SW_Show)
      

  3.   

    如果知道调用的窗体位置,并是事先设计好的,你还是用控件数组吧,
    或者使用hWnd来记录目标窗体。但是依你的思路看,只好穷举窗体名称了,如楼上的办法
      

  4.   

    首先申明: 事先不知道窗体位置,
    只是想实现菜单与窗体间的动态对应关系能不能根据窗体名称来创建一个对象,那样不是直接可以调用了吗?
    因为在这种情况下允许调用,如果穷举窗体名称从感觉上好像不怎么好?Sub ShowForm(ByVal pfrm As Object)
      pfrm.Show
    End Sub
      

  5.   


    TO:jamwaychen(凌凌漆)
        你这样不行,实在太麻烦了,这段代码会膨胀
       
    TO:ferrytang(ferry)
        其实用你这种方法也不行,工程中没被激活的窗体,则不会计算在其中的
        有没有函数能够一一罗列当前工程所拥用的窗体名?(包括没有被激活的)TO:tg123(T.G.)
        这两个API函数麻烦讲的具体些?它们对于没被激活的窗体是否有效???   谢谢各位了~~~