Office中国论坛/Access中国论坛

标题: 求助!关于用CALL 调用带变量的过程名称 [打印本页]

作者: 坡芽歌书    时间: 2011-11-9 14:04
标题: 求助!关于用CALL 调用带变量的过程名称
本帖最后由 坡芽歌书 于 2011-11-10 08:14 编辑

如题:
如下:

Private  cc  as Integer

Private Sub Command1_Click()
cc = 1
msgbox "你是按的  Command1"
End Sub

Private Sub Command2_Click()
cc= 2
msgbox "你是按的  Command2"

End Sub

Private Sub Com_Click()

’想用CALL 调用 Command1_Click()  及 Command2_Click() 事件过程
把其中 Command1_Click() 中的“1” 设置为变量
如下调用,会出错

call "Command" & cc & "_Click"


End Sub


运行出错??
求助大侠们帮助一下,谢谢了!!!!!!!!!!!
作者: wu8313    时间: 2011-11-9 17:29
不知道,你红色部分的代码 要实现什么?
作者: roych    时间: 2011-11-9 23:54
不能这样写滴……要用onclick事件来处理……
作者: 坡芽歌书    时间: 2011-11-10 08:16
roych 版主您好!能讲解一下   用onclick事件来处理  详细调用过程吗?
谢谢了先!!!!!!
作者: t小宝    时间: 2011-11-11 09:03
call "Command1_Click" 和 call Command1_Click 是完全不同的,call 后面必须是过程名,不是过程名称字符串,
Eval 函数可以调用过程名称字符串,但只能调用通用模块中的公共过程,具体看帮助。

1楼的问题也可以这样:
if cc=1 then
call Command1_Click
elseif cc=2 then
call Command2_Click
...
end if



作者: wu8313    时间: 2011-11-11 09:34
本帖最后由 wu8313 于 2011-11-11 09:35 编辑
t小宝 发表于 2011-11-11 09:03
call "Command1_Click" 和 call Command1_Click 是完全不同的,call 后面必须是过程名,不是过程名称字符串 ...


看到了 t小宝 在回帖中提到的这个函数 EVAL ,很受益。原来也不知道有这个函数。

选取了 EVAL 这个函数的一段帮助,感觉有意义,放在这里。

=========================================

使用 Eval 函数可以访问在 Visual Basic 中通常不能使用的表达式运算符。例如,不能在代码中直接使用 SQL 运算符 Between...And 或 In,但是在传给 Eval 函数的表达式中可以使用它们。下面的示例用于确定“订单”窗体上的“货主地区”控件的值是否为几个特定的州缩写名称中的一个。如果字段中包含了其中一个缩写名称, intState 的值将为 True(-1)。请注意,在示例中使用了单引号 (') 以在字符串中包含另一个字符串。

Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
    & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

作者: todaynew    时间: 2011-11-11 10:58
本帖最后由 todaynew 于 2011-11-11 11:07 编辑

试试以下函数,不知道行不行:

function Callcmd(num as long)
     CallByName me.form.controls("Command" & num),"OnClick",vbMethod,"[Event Procedure]"
end function

请参见《权限麻雀》一文中对事件的处理方法,其CallByName的用法在标准模块中。
作者: aslxt    时间: 2011-11-11 15:57
8楼的也不行,六楼的可以严重参考:
把所有过程都改成function
然后 select case 变量的值,进行调用不同的funtion
作者: aslxt    时间: 2011-11-11 16:10
本窗体调用,也可以这样:
Private Sub Command0_Click()
  Dim a
  a = InputBox("")
  Select Case "Command" & a & "_Click()"
  Case "Command2_Click()"
    Call Command2_Click
  Case "Command1_Click()"
    Call Command1_Click
  End Select

End Sub

作者: roych    时间: 2011-11-13 10:41
wu8313 发表于 2011-11-11 09:34
看到了 t小宝 在回帖中提到的这个函数 EVAL ,很受益。原来也不知道有这个函数。

选取了 EVAL 这个函 ...

这个函数,早在几年前学Excel时就用过了。不过,不管在Excel还是Access里,这个函数用得都算比较少的,所以也不过度关注。
作者: andymark    时间: 2011-11-14 20:44
做了个示例:
http://www.office-cn.net/thread-107247-1-1.html
作者: 坡芽歌书    时间: 2011-12-24 00:38
对不起,才说谢谢!我好久没有上网的。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3