Excel용 VBA, 일종의 동적 if 문 생성

Excel용 VBA, 일종의 동적 if 문 생성

저는 항목과 해당 정보를 저장하기 위해 데이터베이스와 유사한 문서를 작업하고 있습니다. VBA를 사용하여 이에 대한 보고서를 생성하는 방법을 생각하는 데 몇 가지 문제가 있습니다. 현재 항목에 대한 각 정보 행에 대한 탭이 있는 여러 페이지가 있는 사용자 양식이 있습니다.

탭: [담당자에 모두 추가] [상태별로 추가] [유형별로 추가] [일련번호로 추가] [expDate로 추가]

각 탭에는 서로 다른 토글 버튼이 있습니다.

처음에는 코드에서 multipage.SelectedItem.index가 포함된 선택 사례를 사용하여 보고서를 작성하도록 하고 싶었지만 보고서 작성 방법이 매우 제한적이라는 것을 깨달았습니다. 나는 다른 기준을 추가할 수 있도록 탭에 "페이지 추가"를 하기로 결정했습니다. 예를 들어 상태 A의 모든 항목을 expDate A에 expDate B에 추가합니다. 이를 통해 탭이 6개 있다는 것을 깨달았습니다. 가능한 모든 IF 문을 코딩하려면... 이제 도움을 청합니다. 검색 기준에 "활성" 탭만 있거나 추가된 탭만 포함할 수 있는 동적 IF 또는 CASE 블록을 만드는 방법이 있습니까? 나머지 코드는 워크시트의 항목 수를 계산하고 FOR 루프를 사용하여 반복하고 기준에 맞는 항목을 Word 문서에 추가하는 것으로 구성됩니다. 아직 확실한 코드가 작성되지는 않았지만 내가 가진 코드는 다음과 같습니다.

이 코드 조각에서는 전달한 인수에 따라 가능한 IF 문을 일종의 관리하기 위해 "수집" 함수를 만들어 보았습니다.

Private Function advancedGathering(Optional status As String, Optional itemType As String, Optional id As Integer, Optional expDate As Date, Optional holder As String)

Select Case advancedGathering
    Case status <> Null And _
         itemType <> Null And _
         id <> Null And _
         expDate <> Null And _
         holder <> Null

    Case status <> Null And _
         itemType <> Null And _
         id  <> Null And _
         expDate <> Null And _
         holder <> Null

    End Select


End Function

보시다시피 불완전합니다.

그리고 버튼 클릭 이벤트에 대해서도 다음과 같은 내용이 있습니다.

Private Sub Button_generate_Click()

    Dim row, quantity As Integer

    quantity = WorksheetFunction.Count(Range(colHandler.column("id") & 3, colHandler.column("id") & 900)) 'There are less than 900 items, this is just to capture all

    If Toggle_status_ATR.Value = False Or _
       Toggle_type_ATR.Value = False Or _
       Toggle_id_ATR.Value = False Or _
       Toggle_expDate_ATR.Value = False Or _
       Toggle_holder_ATR.Value = False Then

        Select Case MultiPage_main.SelectedItem.Index
            Case 0 'Add All"
                If Toggle_all_addAll.Value = True Then
                    'This is the first tab which I'm not worried about because if selected it will add all the info on the items
                Else

                End If

            Case 1 'Add by Status
                    If Toggle_status_wayOverdue.Value = True Then
                ElseIf Toggle_status_overdue.Value = True Then
                ElseIf Toggle_status_due.Value = True Then
                ElseIf Toggle_status_good.Value = True Then
                ElseIf Toggle_status_valid.Value = True Then
                End If

            Case 2 'Add by Type

            Case 3 'Add by ID

            Case 4 'Add by expDate

            Case 5 'Add by Holder

        End Select

    Else '> Any of the [Toggle_xxx_ATR] buttons are clicked

    End If

Multipage_selection: 'I tried to use GOTO statements


check_valid:

    Unload Me

End Sub

솔직히 아이디어가 부족했고 능숙한 코더도 아니며 실제 업무에 추가 프로젝트로 VBA를 사용한 지 불과 몇 달밖에 되지 않았습니다. 어떤 아이디어라도 도움이 되며 시간을 내주신 모든 분들께 감사드립니다!

관련 정보