1

我正在开发执行以下操作的程序的一部分:

1)判断某个单元格中是否有“X”以及表头是否与用户输入匹配

2) 如果为真,则将标头的内容添加到类中的元素

例如,如果一行的“clutch”标题下有一个“X”,则将“clutch”添加到,在本例中为 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 循环,经过一些研究,我想出了一个可以包含在类中的数组module 将是最好的方法,因为我可以遍历数组中的每个值。

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

4

1 回答 1

1

我不是 100% 确定你的意思。但是根据您帖子的第一部分,这里有一些带有注释的示例代码

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
于 2013-06-11T16:02:22.200 回答