不能取得类worksheetfunction的vlookup属性_第25讲:把源数据的值赋给类,然后利用类完成查找的方案之三...

6e6cab99536701a382d573c901adfe33.png

(接上讲内容)

在前面的两讲中我们讲了类和标准模块的内容,这一讲,我们来讲具体的运行过程.对于此时而言,团队已经组建完成,方针也已经确定,剩下的内容就将是团队的运作。

我们点击下面截图的运行按钮(把基础数据的值付给类,然后利用类完成查找的方案):

92a5b60a020f847565292e4f7394fc36.png

执行过程的解析:

  1. 标准模块将在“L”列建立一个循环,循环的条件是Cells(i, "l") <> ""。

Do While Cells(i, "l") <> ""

Set tes = New mydyg

tes.TJ = Cells(i, "L")

For Each rn In Range("a1", Cells(rows.Count, 1).End(xlUp))

Set tes.DYGA = rn

Next

②在上述循环中Set tes = New mydyg 将赋值一个类tes,这个类是mydyg。

③将tes的TJ属性进行赋值为L列单元格的值

④给tes类的DYGA属性进行赋值,赋值的时候将遍历所有A列的单元格,将单元格赋给DYGA,但这不是目的,目的是当这个单元格作为一个参数传递到类的赋值语句时,会做一个判断但这个值等于TJ时将有变量rngsA,rngsB. RngsC,三个变量的赋值,这才是关键的,这三个变量是类三个属性值的“宿主”,代码如下;

Property Set DYGA(rng As Range)

If rng = TJ Then

rngsA = Cells(rng.Row, 2)

rngsB = Cells(rng.Row, 3)

rngsC = Cells(rng.Row, 4)

End If

End Property

⑤ 主程序单元格值的回填。在上面的各项工作结束后。主程序的过程将利用上面的数据进行值的回填

Cells(i, "m") = tes.QSA

Cells(i, "N") = tes.QSB

Cells(i, "O") = tes.QSC

上述三条语句就是值的回填过程,将tes的三个属性值填给M,N,0三列的单元格中。

取得tes.QSA,是利用下面的GET语句获得,此过程非常的简单,就是将“宿主”rngsA中的值传递给QSA.

Property Get QSA()

QSA = rngsA

End Property

取得tes.QSB,是利用下面的GET语句获得,此过程非常的简单,就是将“宿主”rngsB中的值传递给QSB.

Property Get QSB()

QSB = rngsB

End Property

取得tes.QSC,是利用下面的GET语句获得,此过程非常的简单,就是将“宿主”rngsC中的值传递给QSC.

Property Get QSC()

QSC = rngsC

End Property

经过上述的各个环节,我们需要的结果就实现了。看下面的运行结果:

fb7af04ae3c94e1a3dde6c63ca279a10.png

我们再次回顾一下上述利用类,实现我们目的的过程。

1 我们的目的是按照L列的值在A列中进行查找,找到后将对应的几个数组回填给之后的M,N,O列。

2 为了实现我们的目的,先搭建了一个mydyg类。这个类的作用是当我们传递给他一个单元格时,会做出判断,当是我们需要的指向时会给类的属性赋值。这个类是纯粹虚无的,只能给人以精神的指导,是一个“魂”。他需要借助一个实体的对象来实现。

3 在主程序中我们适时建立了一个这样的对象tes,将上述类的灵魂赋给这个对象,这时的tes就不再是灵魂了,而是可以为我们使用的具体对象了。当我们给这个对象赋给TJ值的时候就可以输出对应的我们需要的值了。

整个过程就是一个灵魂到肉身的转变,只有灵魂时不能完成任何的工作,只有具有了肉身才能完成相应的责任工作。

我们仍旧回到我们我们的目的,这种实现方法中在类内部依靠传递进来的单元格进行判断时,是否还有还有其他的方案呢?是的,在下一讲中我们继续这个话题的讲解。

7786d90bb4981858a02ea9658942ea8c.png

随笔:在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!学习VBA是个过程,如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。

“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,有一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。

VBA是利用Office实现自己小型办公自动化的有效手段,我根据自己20多年的VBA实际利用经验,现在推出了五部VBA教程。第一:VBA代码解决方案,是VBA中各个知识点的讲解,覆盖绝大多数的VBA知识点;第二:VBA数据库解决方案,是数据处理的专业利器,详细的介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作。第三:VBA数组与字典解决方案,讲解VBA中的数组和字典的利用。字典是VBA代码水平提高的手段,值得深入的学习。第四:VBA代码解决方案之视频,是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。第五:VBA中类的解读和利用,是一部高级教程,对于自己理论的提高很有益处。上述教程可以根据1,3,2,5或者是4,3,2,5的顺序逐渐深入的学习和利用。

最后将一阙词送给致力于VBA学习的朋友:浮云掠过,暗语无声,唯有清风,惊了梦中啼莺。望星,疏移北斗,奈将往事雁同行。阡陌人,昏灯明暗,忍顾长亭,多少VBA人,暗夜中,悄声寻梦,盼却天明,怎无凭!

分享成果,随喜正能量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Excel中,VBA是一种编程语言,可以用来自动化执行一系列操作。如果要通过VBA来调用VLOOKUP函数实现动态查询,我们可以按照以下步骤进行操作: 1. 打开VBA编辑器:在Excel中按下Alt+F11键,即可打开VBA编辑器窗口。 2. 在VBA编辑器中插入新的模块:在"插入"菜单中选择"模块",即可在项目资源管理器中创建一个新的模块。 3. 编写VBA代码:在新的模块中输入以下代码,用于调用VLOOKUP函数实现动态查询。 ```vba Function VLOOKUP_Dynamic(LookupValue As Range, LookupRange As Range, ColumnIndex As Integer) As Variant Dim Result As Variant Result = Application.WorksheetFunction.VLookup(LookupValue, LookupRange, ColumnIndex, False) VLOOKUP_Dynamic = Result End Function ``` 4. 保存并关闭VBA编辑器:保存VBA代码,然后关闭VBA编辑器窗口回到Excel工作表。 5. 在单元格中调用VBA函数:在Excel工作表中选择一个单元格,在函数栏中输入"=VLOOKUP_Dynamic(要查找, 查找范围, 返回列索引)",并按下回车键。其中,"要查找"是要动态查询的,"查找范围"是要进行查询的范围,"返回列索引"是要返回的列号或列索引。 通过以上步骤,我们可以通过VBA调用VLOOKUP函数实现动态查询。每当单元格中的发生变化时,VLOOKUP_Dynamic函数将会重新计算并返回相应的查询结果。这种方法可以节省时间和手动操作的复杂性,提高查询的效率和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值