
Estoy trabajando en un documento similar a una base de datos para almacenar elementos y su información. Tengo problemas para pensar en una forma de producir un informe para estos usando VBA. Actualmente tengo un formulario de usuario que tiene varias páginas con pestañas para cada fila de información de los elementos:
Pestañas: [agregar todo al representante] [agregar por estado] [agregar por tipo] [agregar por serie] [agregar por fecha de expedición]
cada pestaña tiene diferentes botones de alternancia.
Al principio solo quería que el código generara un informe usando un caso seleccionado con multipage.SelectedItem.index, y me di cuenta de que el informe iba a ser muy limitado. Decidí tener una "página para agregar" a las pestañas para que pudieras agregar diferentes criterios, por ejemplo agregar todos los elementos con estado A con expDate A a expDate B. Con esto me di cuenta de que tengo 6 pestañas y tendría para codificar todas las declaraciones IF posibles... Ahora, una petición de ayuda: ¿hay alguna manera de crear un bloque IF o CASE dinámico en el que solo se puedan tener las pestañas "activas" o agregadas a los criterios de búsqueda? el resto del código consistiría en contar la cantidad de elementos en la hoja de trabajo e iterar mediante el uso de un bucle FOR y agregarlos a un documento de Word a medida que cumplan con los criterios. Todavía no tengo un código sólido escrito, pero lo que tengo se parece a esto:
En este fragmento de código intenté crear una función de "recopilación" para gestionar las posibles declaraciones IF, dependiendo de los argumentos que le hayas pasado:
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 puedes ver.
Y también tengo esto para el evento de clic en el botón:
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
Honestamente, me quedé sin ideas, no soy un codificador competente y he estado trabajando con VBA solo durante unos meses como un proyecto adicional a mi trabajo actual. ¡Cualquier idea ayuda y gracias a todos por su tiempo!