大概意思是这样的:
Dim a As String
a = "form2"
这两句不能变想通过a这个变量来实现form2.show的效果
Dim a As String
a = "form2"
这两句不能变想通过a这个变量来实现form2.show的效果
解决方案 »
- 本人主导开发的报表控件,AC Report更新到2.8了,请多支持~
- 初学者请教一个问题
- 急!!!!截取数据库(access)其中一部分来用,看看我的这个哪里有问题啊
- 问
- 怎么样作选号程序在数据库中随机选择一条数据,然后在把这个数据删掉,这样下此就选不到他了.
- 怎样设置file1的属性,使得列表框中只出现扩展名为“txt"
- 新手请教
- 请教一个字节有高位,是否有低位,如何划分,谢谢!!!
- VB版的高手都到哪去了?提了一个问题,这么多天都得不到明确的答案:(
- (20分)怎么判断鼠标的位置正在某个控件的上面
- 设有密码的access数据库的连接字符串该怎么写?
- TrueDBGrid控件问题:一字段的值低于60,整行设为红色背景?
我也刚好想问这个问题。其实这个功能在vfp中通过宏替换 & 来实现的,可是在vb中不行。
如:在vfp中,用以下语句
a = "form2"
do form &a
就可以打开form2这个表单(窗口)但在vb中
Dim a As String
a = "form2"
a.show
就要出错了。
这样吧
Dim a As Form
Private Sub Form_Load()
Set a = Form2
a.Show
End Sub
Dim a As String
a = "form2"
Dim myForm As Form
Set myForm = Forms.Add(a)
myForm.Show
End Sub
Dim a As Form
Private Sub Form_Load()
Set a = Form2
a.Show
End Sub
问题在于Set a = Form2 一句。
既然我用a="Form2"来表示,那么表明:
一:字符变量a 可以表示Form2,也可以表示Form1、Form4...等等;
二:在给变量a 赋值之前,并不能确定代表哪一个窗体;
所以怎么处理 Set a = ...呢?
你提供的代码已经测试通过,但小弟还有个问题是,如果form2在工程中不存在,怎么办?是不是只能通过检测错误号来判断字符变量 a 所代表的窗体是否存在?
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
a = "form2"
dim frm as form
set frm=forms.add(a)
frm.show
综合一下吧,
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
-----------------
forms是已加载窗体的集合