在类中使用数组(Excel VBA)

我正在做一个程序的一部分,执行以下操作:

1)确定某个单元格中是否存在“X”,以及该标题是否与用户input相匹配

2)如果这是真的,则将头部的内容添加到类中的元素

例如,如果在一个行的“离合器”标题下有一个“X”,则在此情况下,“离合器”被添加到pos.clutch。

这是完成这个(编辑:这是在一个Do While循环,因此R + 1,抱歉,如果这是不明确的原来):

If sh.Cells(R + 1, Clutch) = "X" And _ sh.Cells(1, Clutch).Value = CStr(cboPart.Value) Then pos.Clutch = sh.Cells(1, Clutch) 

现在,问题是每个元素都有一长串的ElseIf语句(总共有6个)。我想把它转换成一个For循环,经过一番研究,我想到了一个数组,我将包括在类中模块将是最好的方法,因为我可以循环访问数组中的每个值。

我想知道如何在类模块中创build由类元素组成的数组,以及是否可以在For循环中为每个类元素设置值。 此外,如果有更好的解决scheme,我想更多地了解它。

我不是100%确定你的意思。 但是基于你的post的第一部分,这里是一些带有注释的示例代码

 Option Explicit Sub tryme() Dim inp As String inp = InputBox("Whats the header:") Dim ws As Worksheet Set ws = Sheets("Sheet1") Dim rng As Range Dim i As Long, j As Long For i = 1 To ws.Cells(1, Columns.Count).End(xlToLeft).Column If StrComp(inp, CStr(ws.Cells(1, i).Value), 1) = 0 Then For j = 2 To ws.Cells(Rows.Count, i).End(xlUp).Row Set rng = ws.Cells(j, i) If StrComp(CStr(rng.Text), "X", 1) = 0 Then ' youve just found a match ' so if your class constructor takes some params ' for example ' ...MyClass(header as String, row as Long) ' then you can call it ' ...dim newMyClassObj(Cstr(ws.Cells(1, i).Text), rng.row) End If Set rng = Nothing Next j End If Next i End Sub