2013-06-11 5 views
1

클래스 (엑셀 VBA)에 배열 작업 이것이 사실이라면, 사용자 입력나는 다음과 같은 수행하는 프로그램의 일부에 일하고 있어요

2)

예를 들어, "클러치"헤더 아래에 "X"가 행에 존재하는 경우, 다음의 "클래스 엘리먼트에 헤더의 내용을 추가 클러치 "가이 경우 포지셔닝 클러치에 추가됩니다. 여기

이 어떤 작업을 수행하는 것입니다 (편집 : 이것은 마에서 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 루프로 변환하고 일부 연구를 통해 클래스 모듈에 포함시킬 배열을 가장 좋은 방법으로 생각했습니다. 배열의 각 값을 루프 할 수 있습니다.

클래스 모듈에 클래스 요소로 만든 배열을 만드는 방법과 For 루프의 각 클래스 요소 값을 설정할 수 있는지 알고 싶습니다. 또한, 더 좋은 해결책이 있다면 그것에 대해 더 알고 싶습니다.

+0

실제로 'If Else'를 'Loop'로 변환하지 마십시오. 일련의 중첩 된'If/Else' 문 대신'Select Case'를 사용하는 것을 고려할 수 있습니다. –

+0

select case 단락 때문에 문제가 발생했습니다. 어떻게 이것을 피하는 것이 좋습니다? –

+0

"사례 선택 단락"이 무슨 뜻인지 잘 모르겠습니다. 나는 당신의 마음을 읽을 수 없으며 다른 누구도 여기에서 할 수 없습니다 - 당신이 시도한 코드를 포함하도록 질문을 업데이트하고 어떤 라인이 오류를 제기하는지 나타냅니다. 오류가 발생하지 않으면 출력이 원하는/예상과 일치하지 않는 방법을 설명하십시오. –

답변

1

나는 무엇을 의미하는지 확신 할 수 없습니다. 하지만 귀하의 게시물의 첫 번째 부분을 기반으로 여기에 코멘트가 포함 된 샘플 코드가 있습니다.

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 
+0

많은 도움이되었습니다. 고마워요! –

관련 문제