调用不同变量的过程

iamxiang 2007-06-10 10:43:44
比如我有一个窗体,里面有不同的过程,如:
sub1,sub2,sub3

在另外一个窗体,我要设置一个变量,如L,令L=sub1(sub2,sub3)
然后,调用不同的过程call L


不知道用什么方法能实现了?请高手指教!
...全文
583 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamxiang 2007-07-02
  • 打赏
  • 举报
回复
谢谢楼上的,用一个变通的办法解决了!
我太固执地想直接调用带参数的变量就想解决问题,不过有时候还是要多想想~

谢谢大家啦~~~
northwolves 2007-07-02
  • 打赏
  • 举报
回复
'form1:

Private Sub file1_click()
MsgBox "file1"
End Sub


Sub xxxx()
file1_click
End Sub
Sub sub2(m As String)
MsgBox m
End Sub



'form2

Private Sub command1_click()
Dim l As String
l = "xxxx"
CallByName Form1, l, VbMethod
l = "sub2"
CallByName Form1, l, VbMethod, Date - Rnd * 100
End Sub
iamxiang 2007-07-02
  • 打赏
  • 举报
回复
楼上的,我不想和你说什么~你别进这个贴子行不行?
你说话了我也不会以为你是高手,你不说话我也不会以为你是哑巴!
  • 打赏
  • 举报
回复
我希望利用一个变量L,l=re![执行过程].(re![执行过程]是表中的字段。re![执行过程]可以是"sub1"或者"sub2"或者"sub3"
程序里面:
call L
------------
没看到..... 不过还是理解不了, 看来跟楼主没法沟通.
  • 打赏
  • 举报
回复
我是真不知道楼主有没有搞明白 CallByName(Me, theFuncName , VbMethod, 需要传递的参数) 这句的作用,有没有试过. 然后再说说它的出入和不足.

我只觉得面对楼主真是在CSDN上几年来从未感觉过的艰难.不是我说话不好听,你自己琢磨去吧.
iamxiang 2007-06-29
  • 打赏
  • 举报
回复
楼上的请耐心看底下的说明~
zzyong00 2007-06-29
  • 打赏
  • 举报
回复
楼主 要搞清楚“过程”和“函数”的区别,这应该是基础知识
过程没有返回值,像你这样调用L=sub1(sub2,sub3),是不行的,因为sub2 sub3没有返回值,它们没法传给sub1值,如果 sub2 sub3是函数就可以了,因为函数一般应有返回值
yachong 2007-06-29
  • 打赏
  • 举报
回复
替楼主顶一下
iamxiang 2007-06-29
  • 打赏
  • 举报
回复
再关注一下吧~
iamxiang 2007-06-22
  • 打赏
  • 举报
回复
再顶一下啊~
iamxiang 2007-06-20
  • 打赏
  • 举报
回复
调用我上楼说的菜单也可以吗?
嗷嗷叫的老马 2007-06-15
  • 打赏
  • 举报
回复
我汗,我也在想用callbyname....被楼上先发了-_-!
TechnoFantasy 2007-06-15
  • 打赏
  • 举报
回复
你的sub1 sub2 sub3,这些方法带参数么?
嗷嗷叫的老马 2007-06-15
  • 打赏
  • 举报
回复
callbyname可以带参数运行的

MSDN里说得很清楚:

CallByName 函数



执行一个对象的方法,或者设置或返回一个对象的属性。

语法

CallByName(object, procedurename, calltype,[arguments()])

CallByName 函数的语法有以下部分:

部分 描述
object 必需的;变体型(对象)。函数将要执行的对象的名称。
procedurename 必需的;变体型(字符串)。一个包含该对象的属性名称或者方法名称的字符串表达式。
calltype 必需的;常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。
arguments() 可选的:变体型(数组)。


说明

CallByName 函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。

在下面的例子中,第一行使用 CallByName 来设置一个文本框的 MousePointer 属性,第二行得到 MousePointer 属性的值,第三行调用 Move 方法来移动文本框:

CallByName Text1, "MousePointer", vbLet, vbCrosshair
Result = CallByName (Text1, "MousePointer", vbGet)
CallByName Text1, "Move", vbMethod, 100, 100
iamxiang 2007-06-15
  • 打赏
  • 举报
回复
谢谢yachong(蚜虫),这样调用单纯的无参数的过程是可以的!


再帮忙想想:比如现在我的l="file1_click()"
file1_click()是指我的窗体上的一个菜单
再比如我的sub2(m as string)是带参数的
应该如何才能实现?

谢谢啦~
yachong 2007-06-14
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim L As String
L = "sub1"
CallByName Form1, L, VbMethod
L = "sub2"
CallByName Form1, L, VbMethod
L = "sub3"
CallByName Form1, L, VbMethod
End Sub

Public Sub sub1()
Debug.Print Now, "Sub1"
End Sub
Public Sub sub2()
Debug.Print Now, "Sub2"
End Sub
Public Sub sub3()
Debug.Print Now, "Sub3"
End Sub
iamxiang 2007-06-14
  • 打赏
  • 举报
回复
另外:再解释一下我的问题:

比如我有一个窗体,里面有不同的过程,如:
sub1,sub2,sub3

现在,我希望利用一个变量L,l=re![执行过程].(re![执行过程]是表中的字段。re![执行过程]可以是"sub1"或者"sub2"或者"sub3"
程序里面:
call L


开始写的时候l=sub(sub2,sub3)可能引起了调解,以为我是想要用回调过程,不好意思~
请高手们再帮忙想想办法!!!

iamxiang 2007-06-14
  • 打赏
  • 举报
回复
theforever(碧海情天),说实话,你的热情我还是赞赏的,只是,不要太先入为主!不要总以老师对学生的口气说话,不太好~那么多牛人都不像你~



请高手们帮忙想想吧~
yachong 2007-06-14
  • 打赏
  • 举报
回复
能不能再想想办法,因为如果能够实现,那就可以用来实现智能程序了~
===============================================================
这个用VFP等解释执行的语言很容易实现,
要不干脆换一种语言好了
LGYAN 2007-06-14
  • 打赏
  • 举报
回复
狠人!!
加载更多回复(24)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧