大概意思是这样的:
Dim a As String
a = "form2"
这两句不能变想通过a这个变量来实现form2.show的效果

解决方案 »

  1.   

    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
    我也刚好想问这个问题。其实这个功能在vfp中通过宏替换 & 来实现的,可是在vb中不行。
    如:在vfp中,用以下语句
        a = "form2"
        do form  &a
     就可以打开form2这个表单(窗口)但在vb中
       Dim a As String
       a = "form2"
       a.show
     就要出错了。
      

  2.   

    通过字符串好像不行的.
    这样吧
    Dim a As Form
    Private Sub Form_Load()
      Set a = Form2
      a.Show
    End Sub
      

  3.   

    Private Sub Command1_Click()
    Dim a As String
    a = "form2"
    Dim myForm As Form
        Set myForm = Forms.Add(a)
        myForm.Show
    End Sub
      

  4.   

    没有不能用字符串来表示窗体,,,,,只能定义一个窗体类型变量
    Dim a As Form
    Private Sub Form_Load()
      Set a = Form2
      a.Show
    End Sub
      

  5.   

    TO:  SafeF8(^_^) 和 talent303(风筝) 
       问题在于Set a = Form2 一句。
    既然我用a="Form2"来表示,那么表明:
      一:字符变量a 可以表示Form2,也可以表示Form1、Form4...等等;
      二:在给变量a 赋值之前,并不能确定代表哪一个窗体;
    所以怎么处理 Set a = ...呢?
      

  6.   

    TO:  northwolves(狼行天下)
       你提供的代码已经测试通过,但小弟还有个问题是,如果form2在工程中不存在,怎么办?是不是只能通过检测错误号来判断字符变量 a 所代表的窗体是否存在?
      

  7.   

    //你提供的代码已经测试通过,但小弟还有个问题是,如果form2在工程中不存在,怎么办?是不是只能通过检测错误号来判断字符变量 a 所代表的窗体是否存在?---------------------不存在就不要用set啊
      

  8.   

    Dim a As String
    a = "form2"Dim retfrm As Form
    Dim frm As Form
    For Each frm In Forms
        If frm.Name = a Then
            Set retfrm = frm
            Exit For
        End If
    Next
    If Not (retfrm Is Nothing) Then retfrm.Show
      

  9.   

    这样就可以了:Dim a As String
    a = "form2"
    dim frm as form
    set frm=forms.add(a)
    frm.show
      

  10.   

    //但小弟还有个问题是,如果form2在工程中不存在,怎么办?是不是只能通过检测错误号来判断字符变量 a 所代表的窗体是否存在?是的,只能进行错误处理。上面LGYAN(紫衣随想)的代码只能处理已经加载的窗体,换而言之,假如有form2这个窗体,但是它没有加载,它是不在forms集合中的
      

  11.   

    向rainstormmaster(暴风雨 v2.0)学习
    综合一下吧,
    function CallForm(byval FormName as string)
     On error goto ErrHandle
      dim Frm as form
      set frm=forms.add(formname)
      frm.show
      exit functionErrHandle:
      if err.number=404 then
           debug.print "无该对象
           err.clear
      end if
    end function或者用CallByName
     Dim frm As Form
        Set frm = CallByName(Forms, "add", VbMethod, FormName)
        frm.Show
      

  12.   

    星多的达人就是厉害,forms.add解决问题。
    -----------------
    forms是已加载窗体的集合