ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 看了类模块一头雾水,比如我做了一个循环判断最大值,如何搞成类模块,以后直接调

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-13 14:50 | 显示全部楼层 |阅读模式
For i = 2 To 11
Max = Val(Cells(i, 2))
For j = 2 To 4
    If Max < Val(Cells(i, j + 1)) Then
       Max = Cells(i, j + 1)
    End If

Next
    Cells(i, 6) = Max
Next

循环判断最大值.zip

15.47 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2023-6-13 15:17 | 显示全部楼层
做成函数就好了,类太高大了,搞不明白。
1.png

TA的精华主题

TA的得分主题

发表于 2023-6-13 16:53 | 显示全部楼层
本帖最后由 WANT-T 于 2023-6-13 16:55 编辑

类模块的使用是这样的,
1、先NEW一下
2、输入参数;
3、输出内容;

如果你不会传递参数、接收参数的操作,就别玩类模块,先vba基础过了再说!
祝您生活愉快,再见!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-13 21:31 来自手机 | 显示全部楼层
WANT-T 发表于 2023-6-13 16:53
类模块的使用是这样的,
1、先NEW一下
2、输入参数;

如果大佬示范一遍,说不定我会受到启发呢!我跟着教程做了几个简单的,但是要想按照自己的想法去用,就不会了

TA的精华主题

TA的得分主题

发表于 2023-6-13 21:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 micch 于 2023-6-14 00:00 编辑

现在这个层度,跳到类模块,面向对象写代码,跨度有点大。可以先看看帖子。

以你的例子来说:
实现了每一行求一个最大值??

那么类模块里,最简化的写法,读入一个单元格区域,返回一个值。

关键是一个概念,而不是如何写代码,先有个对象的概念就好写的很了


模块写
  1. Sub Test()
  2.     Dim cls As myClass
  3.     Set cls = New myClass
  4.     For i = 2 To 11
  5.         Cells(i, 6) = cls.GetMax(Cells(i, 2).Resize(1, 4))
  6.     Next
  7. End Sub
复制代码
类模块写

  1. Public Function GetMax(rng As Range)
  2.     Dim ar, x, mx
  3.     ar = rng.Value
  4.     For Each x In ar
  5.     If x > mx Then mx = x
  6.     Next
  7.     GetMax = mx
  8. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2023-6-14 04:52 来自手机 | 显示全部楼层
如果一个过程,每次运行效果都一样,那用函数就行了,如果过程带状态,因为状态不同运行的结果不一样,才会用到类吧,比如自己实现字典的功能,运行过add之后,keys的结果不同,不是因为参数不同而是状态变了,所以这是个类,而遍历找最大值这种真的就是个函数---纯属个人片面观点

TA的精华主题

TA的得分主题

发表于 2023-6-14 09:02 | 显示全部楼层
用类和不用类,并不是代码怎么写的问题,而是不同的概念,思路不同。

比如现在写好一个类对象,能求最大值,明天想求最小值,可以增加一个方法,后天需要平均值可以再增加一个方法。总之这个对象,可以继续维护,用函数就是多个函数。结果是一样的,但是思路不同。

再比如,下个月,可以给这个类对象增加属性,对象嘛,就比如字典一样,有不同的方法,属性。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-6-14 09:10 | 显示全部楼层
希望123456 发表于 2023-6-13 21:31
如果大佬示范一遍,说不定我会受到启发呢!我跟着教程做了几个简单的,但是要想按照自己的想法去用,就不 ...

跟着教程写都 不会,我给你师范一个你就会了?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-14 10:54 来自手机 | 显示全部楼层
WANT-T 发表于 2023-6-14 09:10
跟着教程写都 不会,我给你师范一个你就会了?

跟着教程我会的,但是具体运用,就不会了!比如我随机选择一个我以前写的代码,如何转化成类模块,就不知道怎么下手了

TA的精华主题

TA的得分主题

发表于 2023-6-14 11:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
希望123456 发表于 2023-6-14 10:54
跟着教程我会的,但是具体运用,就不会了!比如我随机选择一个我以前写的代码,如何转化成类模块,就不知 ...

别好高骛远,先把基础打好才是硬道理。
我这水平,对类还没去触碰呢。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 13:44 , Processed in 0.044441 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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