网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
10月19日漏签0天
vba吧 关注:17,077贴子:66,827
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 37回复贴,共1页
<<返回vba吧
>0< 加载中...

求助VBA类模块是不是必须实例化才可以调用其中的方法?

  • 只看楼主
  • 收藏

  • 回复
  • 烟雨江南ooo
  • 自成一派
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如图我设了一个类模块ArtayUtil,再在其它模块中实例化得到一个对象oArrayUtil,这样可以调用CalcArea函数。我看网上其它程序语言说加static静态方法可以无需实例化就直接用类中的方法,但我在vba中想不实例化却总是报错。



  • lxlzmh2002
  • 人中龙凤
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没有静态类,类都能时例化。看你加那个static也没加类上,你加方法上了,关键是vba的static关键字是声明静态变量的


2025-10-19 02:13:49
广告
不感兴趣
开通SVIP免广告
  • ISD_狮子座
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其它语言不知道,但VBA的类必须实例化的,而且类的目的不就是这样吗?不明白你省那一行的实例化有什么意义?如果同一个类需要在一个过程中分别使用的话,那不是更麻烦吗?你每次都需要重新定义里面的变量


  • 跟着南哥混3天饿9顿
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接受拒绝管理Cookie
文档
全球导航
学习
5.2.4.1.2默认实例变量静态语义
文章
02/17/2021
2个贡献者
反馈
如果类模块的VB_PredeclaredId属性或
VB_GlobalNamespace属性的值为"True"。此缺省实例变量是使用模块扩展名创建的,就像在<module-variable-declaration>中声明一样,该<module-variable-declaration>包含一个<as-autoobject>元素,该元素的<class-type-name>是类的名称。
如果此类模块的VB_PredeclaredId属性的值为"True",则此默认实例变量将以类的名称作为其名称。此命名变量作为Set赋值的目标是无效的。否则,如果此类模块的VB_PredeclaredId属性没有值"True",则此默认实例变量没有可公开表达的名称。
如果此类模块的VB_GlobalNamespace属性的值为"True",则该类模块被视为全局类模块,允许对其默认实例的成员进行简单名称访问,如第5.6.10节中所述。
请注意,如果VB_PredeclaredId和VB_GlobalNamespace属性都具有值“True”,则两个属性的语义共享相同的默认实例变量。
因此,你可以朝以下方向进行探索
1。将您要使其静态的类导出到文件夹。
2。在您喜欢的文本编辑器中打开导出的.cls文件,然后更改
VB_PredeclaredId的条目,以便读取VB_PredeclaredId = True。
3。保存文件,然后重新导入到VBA。
如果还是不行,看看是否要加入初始化事件。


  • ISD_狮子座
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
但如果我写好一个查询用的类就可以简化成这样
With SeleA
.LetCn = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=*****;Port=****;Database=Power_BI;Uid=powerbi;Pwd=*****;OPTION=3;"
.LetDB = "ZFIT072"
.LetFiels = "ZCOLUMN, ZTEXT_EN, DMBTR, HSLVT"
.LetKey = "BUKRS = '" & CoCode & "' and RYEAR = '" & FYear & "' and RPMAX = '" & FMonth & "'"
.LetOrderBy = "RACCT"
MatchData.ListColumns("ZCOLUMN").Range.Rows(2).CopyFromRecordset SeleB.GetSele2
End With


  • 烟雨江南ooo
  • 自成一派
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这书找不到地方买



  • ISD_狮子座
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好像的确有VBA的静态类,我在这楼的回复里发一下链接,防删


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 37回复贴,共1页
<<返回vba吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示