VBA para Excel, criando algum tipo de instrução if dinâmica

VBA para Excel, criando algum tipo de instrução if dinâmica

Estou trabalhando em um documento semelhante a um banco de dados para armazenar itens e suas informações. Estou tendo problemas para pensar em uma maneira de produzir um relatório para estes usando VBA. Atualmente tenho um formulário de usuário que possui múltiplas páginas com abas para cada linha de informações dos itens:

Guias: [adicionar tudo ao representante] [adicionar por status] [adicionar por tipo] [adicionar por serial] [adicionar por expDate]

cada guia possui botões de alternância diferentes.

No começo eu queria apenas que o código fizesse um relatório usando um select case com multipage.SelectedItem.index, e percebi que isso seria muito limitado em como o relatório seria. Decidi ter uma "página de adição" às abas para que você pudesse adicionar critérios diferentes, por exemplo adicionar todos os itens com status A com expDate A a expDate B. Com isso percebi que tenho 6 abas e teria para codificar todas as instruções IF possíveis... Agora, o pedido de ajuda: existe uma maneira de criar um bloco IF ou CASE dinâmico no qual você poderia ter apenas as guias "ativas" ou adicionadas aos critérios de pesquisa? o resto do código consistiria em contar a quantidade de itens na planilha e iterar através do loop FOR e adicioná-los a um documento Word conforme atendessem aos critérios. Ainda não tenho um código sólido escrito, mas o que tenho é assim:

Neste trecho de código, tentei criar uma função de "reunião" para gerenciar as possíveis instruções IF, dependendo de quais argumentos você passou para ela:

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

Está incompleto como você pode ver.

E também tenho isso para o evento de clique do botão:

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

Sinceramente, fiquei sem ideias, não sou um programador proficiente e trabalho com VBA há apenas alguns meses como um projeto adicional ao meu trabalho real. Qualquer ideia ajuda e obrigado a todos pelo seu tempo!

informação relacionada