ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 418|回复: 8

[讨论] vba要使用类吗,给个正确使用的姿势。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-22 17:53 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
vba要使用类吗,给个正确使用的姿势。

TA的精华主题

TA的得分主题

发表于 2023-3-22 17:59 | 显示全部楼层
问的毫无头绪。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 18:00 | 显示全部楼层
Private m_sPriority As String

Property Let Priority(lInput As Long)
    Select Case lInput
        Case 1
            m_sPriority = "High"
        Case 2
            m_sPriority = "Medium"
        Case 3
            m_sPriority = "Low"
        Case Else
            m_sPriority = "No Priority"
    End Select
End Property

Property Get Priority() As String
    Priority = m_sPriority
End Property

毕竟要学会面向对象编程,我觉得主要还是vba开发的项目比较简单,加了类会使本不富裕的家庭不会更加富裕。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 18:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
fenghuaxue 发表于 2023-3-22 18:00
Private m_sPriority As String

Property Let Priority(lInput As Long)

比如一个sheet中数据有多行是作为辅助参考数据的。
1.以A列作为key,其他列存入类作为value放入字典。
2.实际用的时候就不用去sheet上重新找对应数据。而且速度也会提高很多。
3.我觉得这个是一方面吧。

TA的精华主题

TA的得分主题

发表于 2023-3-22 21:30 | 显示全部楼层
不是非要使用的类模块,一般我都是用模块就可以了。

TA的精华主题

TA的得分主题

发表于 2023-3-22 22:06 | 显示全部楼层
本帖最后由 micch 于 2023-3-22 22:09 编辑

用类不是因为更快,更好。

用类是因为你觉得类好用,如果你觉得不好用,那就不用类也罢。

毕竟在VBA的范围内,类不类,不影响啥。

如果要做一个比较复杂的,大的项目,建议还是用类,只是建议。vba的类缺很多功能,不是很好用,比不用类能好一些。

我前几天在学习在vba编程的时候用面向对象的思路写代码,觉得类还是挺好的。后续维护修改很方便

TA的精华主题

TA的得分主题

发表于 2023-3-22 23:44 | 显示全部楼层
fenghuaxue 发表于 2023-3-22 18:00
Private m_sPriority As String

Property Let Priority(lInput As Long)

VBA的面向对象太简陋了,最好用C++学面向对象

TA的精华主题

TA的得分主题

发表于 2023-3-23 16:24 | 显示全部楼层
有些功能必须使用类,比如监听事件。

类模块可以写一些通用性的东西,比如写一个高度封装的数组,可以有count,add的数组。
在以后开发过程中使用这些类会提高编程速度。
现在的vba代码多数都是用函数封装,虽然函数也可以封装,但是封装程度完全比不上类。

在复杂的开发下使用类可以有很清晰的思路,比如写一个学生排名,可以把学生科目做成属性,每个学生为一个实例,这样比二维数组清晰很多。
相比VBA的结构Type也可以代替类的属性功能,但是结构不能赋值给变量,类可以放进任何地方。

TA的精华主题

TA的得分主题

发表于 2023-3-25 08:38 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
类不是必须的,比如c语言也是函数式编程(面向过程),但它能写任何程序,包括操作系统。但使用类(面向对象)可做到更抽象,让人的思维提高一个层次,有更多时间关注业务逻辑而不是频繁处理底层技术。当然,vba的类缺少很多功能,并不是完整的类,如果真的需要,改用语法类似的vb.net或者其他高级语言比如c#,java吧
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-3 07:47 , Processed in 0.034869 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表