gpt4 book ai didi

excel - 对于 Excel VBA 中的每个类属性

转载 作者:行者123 更新时间:2023-12-05 01:22:39 25 4
gpt4 key购买 nike

我有一些看起来像这样的代码:

pos.Clutch = sh2.Cells(R, Clutch)
pos.Wiper = sh2.Cells(R, Wiper)
pos.Alternator = sh2.Cells(R, Alternator)
pos.Compressor = sh2.Cells(R, Compressor)
...
pos.Telephone = sh2.Cells(R, Telephone)
poss.Add pos

poss 是一个集合,Clutch、Wiper 等是列索引(从 1 开始)。这目前有效,但非常难看。我正在寻找一种方法来做这样的事情......
Do While i <= classProperty.count
For each classProperty in pos
classProperty = sh2.Cells(R + 1, i)
Next classProperty
Loop

显然这是行不通的,但是有人对如何在一个类中创建一个大致相同的方法或集合有任何建议吗?

最佳答案

不知道有什么好办法。它丑陋的唯一原因是你还没有在类里面隐藏它。采取这个程序

Sub Main()

Dim clsPos As CPos
Dim clsPoses As CPoses

Set clsPoses = New CPoses
Set clsPos = New CPos

clsPos.AddFromRange Sheet1.Range("A10:E10")
clsPoses.Add clsPos

End Sub

没有什么丑陋的。现在 AddFromRange 方法有点难看,但你只需要在编写它或数据更改时查看它。
Public Sub AddFromRange(ByRef rRng As Range)

Dim vaValues As Variant

vaValues = rRng.Rows(1).Value

Me.Clutch = vaValues(1, 1)
Me.Wiper = vaValues(1, 2)
Me.Alternator = vaValues(1, 3)
Me.Compressor = vaValues(1, 4)
Me.Telephone = vaValues(1, 5)

End Sub

更新:吃数组而不是 Range 的替代方法。
Public Sub AddFromArray(vaValues as Variant)

Me.Clutch = vaValues(1, 1)
Me.Wiper = vaValues(1, 2)
Me.Alternator = vaValues(1, 3)
Me.Compressor = vaValues(1, 4)
Me.Telephone = vaValues(1, 5)

End Sub

关于excel - 对于 Excel VBA 中的每个类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17178461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com