¿Cómo unir 3 macros para que se ejecute con un solo botón?

Les comento. Tengo un combobox que selecciona una hoja de un documento y tres botones que hacen distintas acciones, ya sea extraer información de la hoja seleccionada, darle formato a la hoja y generar un PDF de la misma. Mi duda es que quisiera que esas 3 acciones se ejecuten con un solo botón.

Detallo a continuación la macro y en orden las acciones individuales

Private Sub ComboBox10_Change()
    If ComboBox10.ListIndex = -1 Then
        MsgBox "Seleccione una hoja", vbInformation, "AVISO"
        Exit Sub
    End If
    Call Mostrar
    Set h = Sheets(ComboBox10.ListIndex + 1)
    '
    'Copia celdas a la hoja auxiliar
    h. Cells. Copy Sheets("Auxiliar"). Range("A1")
    'MsgBox "Información copiada"
     'hace que no se visualice la ejecución de la macro
Application.ScreenUpdating = False
End Sub

.

Private Sub CommandButton11_Click()
'comando para generar el PDF de las eqtiquetas
Hoja35.Columns("a:o").Delete
fin = Hoja34.Range("b65536").End(xlUp).Row
Hoja34.Select
Range("A8").Select
For y = 0 To Int((fin - 1) / 3)
    For k = 0 To 2
        Hoja36.Range("b2").Value = "'" & Format(ActiveCell.Value, "00000000")
        Hoja36.Range("a1:e5").Copy Destination:=Hoja35.Cells((5 * y) + 1, (5 * k) + 1)
        ActiveCell.Offset(1, 0).Select
        If ActiveCell.Value = "" Then End
    Next k
Next y
Hoja35.Activate
End Sub

Private Sub CommandButton12_Click()
'comando para dar formato a las eqtiquetas
    Hoja35.Activate
    Hoja35.Columns("A:A").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("B:B").Select
    Selection.ColumnWidth = 10.29
    Hoja35.Columns("C:C").Select
    Selection.ColumnWidth = 7.71
    Hoja35.Columns("D:D").Select
    Selection.ColumnWidth = 45
    Hoja35.Columns("E:E").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("F:F").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("G:G").Select
    Selection.ColumnWidth = 10.29
    Hoja35.Columns("H:H").Select
    Selection.ColumnWidth = 7.71
    Hoja35.Columns("I:I").Select
    Selection.ColumnWidth = 45
    Hoja35.Columns("J:J").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("K:K").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("L:L").Select
    Selection.ColumnWidth = 10.29
    Hoja35.Columns("M:M").Select
    Selection.ColumnWidth = 7.71
    Hoja35.Columns("N:N").Select
    Selection.ColumnWidth = 45
    Hoja35.Columns("O:O").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Rows("1:1").Select
    Selection.RowHeight = 6.75
    Hoja35.Rows("2:2").Select
    Selection.RowHeight = 15.75
    Hoja35.Rows("3:3").Select
    Selection.RowHeight = 15.75
    Hoja35.Rows("4:4").Select
    Selection.RowHeight = 15.75
    Selection.RowHeight = 15.75
    Hoja35.Rows("5:5").Select
    Selection.RowHeight = 6.75
    ActiveWindow.ScrollRow = 1
    Range("A1:B2").Select
End Sub

Private Sub CommandButton13_Click()
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=True
End Sub

1 Respuesta

Respuesta
1

En tu formulario el siguiente código, si no ocupas los otros 2 botones bórralos para no tener código duplicado, con el botón 11, se activan las 3 macros en secuencia.

Private Sub CommandButton11_Click()
generar_pdf
formato_etiquetas
exportar_pdf
End Sub
Sub generar_pdf()
Private Sub CommandButton11_Click()
'comando para generar el PDF de las eqtiquetas
Hoja35.Columns("a:o").Delete
fin = Hoja34.Range("b65536").End(xlUp).Row
Hoja34.Select
Range("A8").Select
For y = 0 To Int((fin - 1) / 3)
    For k = 0 To 2
        Hoja36.Range("b2").Value = "'" & Format(ActiveCell.Value, "00000000")
        Hoja36.Range("a1:e5").Copy Destination:=Hoja35.Cells((5 * y) + 1, (5 * k) + 1)
        ActiveCell.Offset(1, 0).Select
        If ActiveCell.Value = "" Then End
    Next k
Next y
Hoja35.Activate
End Sub
Sub formato_etiquetas()
'comando para dar formato a las eqtiquetas
    Hoja35.Activate
    Hoja35.Columns("A:A").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("B:B").Select
    Selection.ColumnWidth = 10.29
    Hoja35.Columns("C:C").Select
    Selection.ColumnWidth = 7.71
    Hoja35.Columns("D:D").Select
    Selection.ColumnWidth = 45
    Hoja35.Columns("E:E").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("F:F").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("G:G").Select
    Selection.ColumnWidth = 10.29
    Hoja35.Columns("H:H").Select
    Selection.ColumnWidth = 7.71
    Hoja35.Columns("I:I").Select
    Selection.ColumnWidth = 45
    Hoja35.Columns("J:J").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("K:K").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Columns("L:L").Select
    Selection.ColumnWidth = 10.29
    Hoja35.Columns("M:M").Select
    Selection.ColumnWidth = 7.71
    Hoja35.Columns("N:N").Select
    Selection.ColumnWidth = 45
    Hoja35.Columns("O:O").Select
    Selection.ColumnWidth = 0.67
    Hoja35.Rows("1:1").Select
    Selection.RowHeight = 6.75
    Hoja35.Rows("2:2").Select
    Selection.RowHeight = 15.75
    Hoja35.Rows("3:3").Select
    Selection.RowHeight = 15.75
    Hoja35.Rows("4:4").Select
    Selection.RowHeight = 15.75
    Selection.RowHeight = 15.75
    Hoja35.Rows("5:5").Select
    Selection.RowHeight = 6.75
    ActiveWindow.ScrollRow = 1
    Range("A1:B2").Select
End Sub
Sub exportar_pdf()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=True
End Sub

Hola James, estuve intentando tu propuesta sin embargo no estaría funcionando, no se que es lo que hago mal.
Al correr la primer macro se sale del formulario y me muestra una de las hojas; lo que me lleva a entrar nuevamente en el formulario tal como antes.

Saludos.

En la primera macro esta instrucción es la que te saca, la macro encuentra una celda activa vacía y te finaliza el programa.

Bien, si encuentra una celda vacía no podría pasar a ejecutar la macro que da el formato.

Pregunto

habria que ver la razon para poner ese if tienes 2 opciones o borras la linea, o la pones asi rem if activecell.value="" then end con esto impides que esta linea se ejecute y el programa seguira su curso, aunque tiene sentido que esa linea este si esta vacia significa que no hay nada que formatear. y el pdf final saldra en blanco.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas