为了账号安全,请及时绑定邮箱和手机立即绑定

excel vba public函数调用相关问题?

excel vba public函数调用相关问题?

德玛西亚99 2019-02-05 10:06:04
1、定义成public函数后,是在本excel工作簿中所有的过程和函数都可以调用,还是所有打开的excel工作簿都可以调用这个public函数?2、在一个模块中定义一个public函数和在一个工作表中定义一个public函数,调用时方法一样吗?还是在工作表中定义的public函数要把workbook、worksheet都写全?比如:在当前工作簿中的sheet(1)里定义了public函数Func1,在sheet(2)里的Func2调用Func1是写成:方法1:Private Function Func2()Func1End Function方法2:Private Function Func2()ThisWorkBook.Sheets(1).Func1End Function方法1和方法2哪个对,我用方法1老是报错Func1没被定义,用方法2就没问题,为什么?3、如果调用public函数时要把路径写全的话,如问题2中的方法2,是不是意味着不同sheet中定义的public函数可以重名呢?4、在一个sheet中,如果直接用Range(“A1”)或Cells(1,1)是代表本sheet的单元格吧,为什么我这么用报错呢?把路径写全就可以,比如ThisWorkBook.Sheets(1).Range(“A1”),为什么?5、事件函数,比如按钮的Click事件,CommandButton1_Click(),这个函数是在点击按钮时触发了Click事件才会被执行的呢,还是我可以在别的函数里调用这个Click函数,比如:我想在点击button2时触发button1的Click事件Sub CommandButton1_Click()Call CommandButton2_ClickEnd Sub这样写可以吗?
查看完整描述

2 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

1)只能在本工作表中使用。(你同时打开2张表,注意看一下模块所属的表,会发现模块是属于特定工作表的)
2)是需要写全。这个问题其实和第一个问题有点类似。每个函数是有其自己的作用域的。程序中叫名字空间。把sheet1,sheet2比喻成2个班级。sheet1中有个叫Func1的同学。而sheet2中没有。所以你要让人家知道Func1就必须告诉他们是那个sheet1班级里的Func1同学。否则有可能sheet3中也有个叫Func1的。就会混淆。
3)是的。他们的名字域(namespace)是不一样的。
4)这要看你把代码写在哪里,如果写在模块中,就有可能报错。如果写在特定sheet中,然后在模块里调用是没有问题的。
5)如果你非要这么做也是可以的。但我建议你把button1的click事件所触发的内容写成一个函数,通过在2个事件里都调用这个函数来实现。而不要直接调用另一个事件函数。
总的来说,你所疑惑的是关于函数的作用域问题。希望我的解释能帮助你理解。



查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 1219 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号