比如,写一个这样的函数:function GetSubName() as string
   ……     end function'下面这个过程就输出“ABC”
sub ABC()
   msgbox GetSubName()
end sub
'下面这个过程就输出“FAN”
sub FAN()
   msgbox GetSubName()
end sub
请问,GetSubName该如何实现?

解决方案 »

  1.   

    对了,补充说明一下,我用的是VBA,内核大致和VB6一样。所以如果是VB.NET的新功能的话,可能对我没有帮助。谢谢哦!!
      

  2.   

    这样就行了:dim SubName as stringfunction GetSubName() as string
        msgbox(SubName)      end function'下面这个过程就输出“ABC”
    sub ABC()
       SubName="ABC" 
       msgbox GetSubName()
    end sub
    '下面这个过程就输出“FAN”
    sub FAN()
       SubName="FAN"
       msgbox GetSubName()
    end sub
      

  3.   

    哦,要将过程中的msgbox去掉,改成 call GetSubName
      

  4.   

    Sub ABC()
       MsgBox "ABC"
    End Sub
    Sub FAN()
       MsgBox "FAN"
    End Sub
    Private Sub Command1_Click()
    Call ABC
    Call FAN
    End Sub
      

  5.   

    这样有什么意义,要是知道过程名的话直接输出就可以了,还用什么GetSubNme();如果不知道的话,还怎么调用?
      

  6.   

    像C语言中的
    __LINE__
    __FUNC__应该说是可以通过插件的形式实现的,在VB的插件中,接收VB保存文件的事件(RequestWriteFile),然后将
    特殊的字符串,如:
    FUNC__
    FUNC__("...")
    替换为FUNC__("真实的函数名称")
    其中"FUNC__"为一个直接返回参数的函数.
    但是即使这样做了,好像意义也不是很大,因为您还是需要写"FUNC__"等特殊字符串.我本来是想写这么一个插件的,但是感觉意义不是很大,如果您有足够的理由,我就给您写一个:)
      

  7.   

    在过程中得到过程名我不知道,但知道过程名而调用过程就可以
    新的类模块class1
    public sub abc()
    msgbox "abc"
    end sub在form1中
    dim c1 as new class1CallByName c1, "abc", VbMethodset c1=nothing
      

  8.   

    我的用处是为了调试方便。比如,在一连串的事件处理过程中,我知道哪些函数先后被调用了。每个事件过程的第一句代码:DisplaySubName()这样我就不用自己跟,通过一连串的msgbox知道那些事件先后发生了。
      

  9.   

    事件是指WINDOWS中的消息吗?
    你可以把消息MSG传到函数中,而DisplaySubName(MSG) 写一个对应表,看一下是触发了哪个事件。
      

  10.   


    那还是不方便的,我还得对每个函数分析它得到了msg,绕弯了。我现在只需要每个函数被调用的时候,能自己告诉我一声:嗨,哥们儿,我(函数名)开始工作了!
      

  11.   

    变通的方法,可以使用VBA为你的1000个过程如sub macron() ... End sub 中加一句 Debug.print "macron"
      

  12.   

    另外,代码写成:
    sub ABC()
       msgbox GetSubName()
    end sub
    '下面这个过程就输出“FAN”
    sub FAN()
       msgbox GetSubName()
    end sub
    所用的时间似乎也不亚于:sub ABC()
       msgbox ”ABC"
    end sub
    '下面这个过程就输出“FAN”
    sub FAN()
       msgbox "FAN"
    end sub
      

  13.   


    如果GetSubName()只有一行语句,你说的是不错的。可是,其实我可以在GetSubName()里面加更多的功能,那就不一样了。
      

  14.   

    可以用Numega SmartCheck监视VB的调用过程..
      

  15.   

    vb工程有一个选项是输出debug调试信息数据库文件,smartcheck可以使用这个文件来跟踪/定位vb程序的调用和相应代码.
      

  16.   

    想看结果就用Debug.print 
    1000+MSGBOX 点确定会点死你
      

  17.   

    想看结果就用Debug.print 
    1000+MSGBOX 点确定会点死你