Travailler avec des arrays en class (Excel VBA)

Je travaille sur une partie d'un programme qui fait ce qui suit:

1) Détermine qu'il y a un "X" dans une certaine cellule et si l'en-tête correspond à l'input de l'user

2) Ajoute le contenu de l'en-tête à un élément de la class si cela est vrai

Par exemple, s'il y a un "X" sous l'en-tête "embrayage" pour une rangée, alors "embrayage" est ajouté, dans ce cas, pos.clutch.

Voici ce qui accomplit ceci (éditer: c'est dans une boucle Do While, donc R + 1, désolé si ce n'était pas clarifié à l'origine):

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

Maintenant, le problème est que j'ai une longue list d'énoncés ElseIf pour chaque élément (il y a 6 au total). Je voudrais convertir cela en For For Loop et, après quelques searchs, j'ai trouvé un tableau que j'inclurai dans la class module serait la meilleure façon, car je pourrais simplement faire une boucle à travers chaque valeur dans le tableau.

J'aimerais savoir comment créer un tableau constitué d'éléments de class dans le module de class et s'il est possible de définir la valeur pour chacun des éléments de class dans une boucle For. En outre, s'il y a une meilleure solution, j'aimerais en savoir plus.

Je ne suis pas vraiment sûr de ce que vous voulez dire. Mais en fonction de la première partie de votre publication, voici un exemple de code avec des commentaires

 Option Explicit Sub tryme() Dim inp As Ssortingng 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 Ssortingng, 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