Ejecutar código de macro dependiendo del valor de una celda
Para Dante Amor
Hola Dante Amor buen día, espero se encuentre muy bien en todos los apectos.
Nuevamente por aquí buscando su valiosa ayuda con la siguiente situación:
Tengo un archivo en el que se liquida unas nominas, el archivo tiene dos hojas, Hoja1 con nombre NOMINA_ADMON y Hoja8 con nombre Desprendible, en la hoja desprendible hay un formato que esta contenido en el rango B2:F31, en este se carga información de la hoja NOMINA_ADMON, esto lo hago mediante una macro, la cual además de alimentar la información del formato, genera un pdf con el desprendible de cada empleado, todo esto me funciona perfectamente, el inconveniente que tengo es que en la hoja NOMINA_ADMON, se liquidan dos nominas (primera quincena y segunda quincena), la primera quincen esta en el rango A2:U40, y la segunda quincena en el rango A45:U85, para alimentar la información del formato he utilizado fórmulas que dependen del valor que tenga la celda E1 de la Hoja Desprendible, para lo cual he colocado 1 para la primera quincena y 2 para la segunda quincena, pero en la macro que genera los pdf no se como hacer para que cuando E1 sea igual a 2 me lea la información correspondiente al rango de la segunda quincena, ya que actualmente siempre me lee el rango correspondiente a la primera quincena, en la hoja desprendible hay dos botones, uno que imprime en pdf y otro que imprime en físico, el siguiente es el código que estoy utilizando
Public ok As Byte 'permite habilitar la impresión
Public marca As Byte 'indica tipo de impresión
Private Sub IMPRIMIRPDF()
'marca que se llamó Impresión_PDF
marca = 1
Call macroImpresion
End Sub
Private Sub IMPRIMIRFISICO()
'marca el tipo de impresión
marca = 2
Call macroImpresion
End Sub
Sub macroImpresion()
Dim r As Long
Dim n As Long
'Imprime el desprendible según la marca
'habilita la impresión
ok = 1
If marca = 1 Then
n = Application.WorksheetFunction.CountA(Sheets("NOMINA_ADMON").Range("A5:A22"))
If n = 0 Then Exit Sub
For r = 5 To (n + 1)
Sheets("Desprendible").Range("B12") = Sheets("NOMINA_ADMON").Range("A" & r)
Calculate
'Sheets("Desprendible").Range("B2:F31").PrintOut
'Sheets("Cuenta").Range("B3:O48").PrintOut
'DoEvents
'Next
Worksheets("Desprendible").Range("B2:F31").Select
'controla posible error de carpeta inexistente o nombre inválido para archivo pdf
On Error Resume Next
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Ordenes\" & Range("B1").Value
DoEvents
Next
ElseIf marca = 2 Then
Sheets("Desprendible").Range("B12") = Sheets("NOMINA_ADMON").Range("A" & r)
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If
DoEvents
'Next
ok = 0
End Sub
Espero haber sido claro con la exposición de mi necesidad, agradezco de antemano la ayuda que me pueda brindar.
PD cualquier observación y/o modifación en la macro para mejorarla, bienvenida sea, no soy programador y lo que hago lo hago sacando códigos de otras aplicaciones y adaptándolos a mi necesidad, por lo tanto es posible que no los este utilizando de la mejor manera.