请问如下call 命令为什么不能用呢
dim  fangjian as string fangjian=range("a1")   ' 此处range("A1")=查询call fangjian     
'-------------------------------------目的是执行 查询这个模块,但是用变量代替了就不能用了,请问原因是什么,谢谢。

解决方案 »

  1.   

    模块名字编译后是一个指向模块的指针,你这是指向'fangjian'这个字串的指针,两个东西不一样。就像form1_click 和 'form1_click'的区别
      

  2.   


    dim fangjian as string 
    fangjian=range("a1") ' 此处range("A1")=查询
    call fangjian
    '没见有人这么用过,你手比我还新呢 可能!
      

  3.   

    一般处理方法是,你可以将模块中的函数合并,然后通过给函数传递不同的参数,执行不同的流程。
    比如 你可以改改:
        funO(byval a as long )
             if a=1 then
             ……
              else
             ……
              end if
        end funO
      

  4.   

    call用于调用“过程”或“函数”。
      

  5.   


    因为我有一个模块是 private sub 查询()
    .....end sub 现在想用call 来调用,我尝试了,直接写range("A1")不行
      

  6.   

    省略call那么括号也要省去  range "A1"
    如果"查询" 是一个方法名,可以 call 查询 
      

  7.   

    用CallByName就可以了一个简单的例子
    Public Sub pbh()
        MsgBox "a"
    End SubPrivate Sub Form_Load()
        CallByName Me, "pbh", VbMethod
    End Sub
      

  8.   

    Call 语句
          将控制权转移到一个 Sub 过程,Function 过程,或动态连接库 (DLL)过程。语法[Call] name [argumentlist]Call 语句的语法具有以下几个部分:部分 描述 
    Call 可选参数;关键字。如果指定了这个关键字,则 argumentlist 必须加上括号,例如: 
      Call MyProc(0) 
    name 必要参数,要调用的过程名称。 
    argumentlist   
    说明调用一个过程时,并不一定要使用 Call 关键字。如果使用 Call 关键字来调用一个需要参数的过程,argumentlist 就必须要加上括号。如果省略了 Call 关键字,那么也必须要省略 argumentlis 外面的括号。如果使用 Call 语法来调用内建函数或用户定义函数,则函数的返回值将被丢弃。若要将整个数组传给一个过程,使用数组名,然后在数组名后加上空括号。
      

  9.   

    我就CALL了,呵呵。call 用于调用函数或者过程。
    '定义一个过程
    private sub mysub()end sub
    'call使用示例。
    call mysub
      

  10.   

    楼主,你太高手了,我大概明白你的意思,那个range函数好像是引用excel的,A1应该是单元格吧,这个函数返回的是该单元格里的内容,你是想你先有函数或过程(例如你的查询),然后不同单元格里的内容是有不同的过程的名称,通过不同的内容去执行不同的代码是吧。那你应该用Select Case 语句,例如:Dim fangjian As String
    fangjian=range("a1") 
    Select Case fangjian
    Case "查询"
    Call 查询 '这里的查询是你定义好的过程或函数名
    End Select