Saltar al contenido

Como se ejecutan 3 macros en una sola hoja


Recommended Posts

publicado

Buen dia.

Tengo un dilema como se pueden ejecutar tres macros en una sola hoja y si es posible anexo detalles de los codigos

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Column <> 1 Then Exit Sub Select Case UCase(Target.Text) Case "SEP" MsgBox "Solo se aceptan profesores de base" Case "STEN 41" MsgBox "Dato incorrecto" 'Aqui puedes añadir tantos casos como quieras End Select

End Sub

Dim X As Variant Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo neo If Intersect(Target, Range("E7:F454")) Is Nothing Or Target.Value = "OTROS" Then Exit Sub If Intersect(Target, Range("E7:F454")) Is Nothing Or Target.Value = "PROCESO" Then Exit Sub If Intersect(Target, Range("E7:F454")) Is Nothing Or Target.Value = "DELEGAR" Then Exit Sub If Target.Value = "" And X = "DELEGAR" Then Target.Offset(, 13).ClearContents Else Target.Offset(, 13) = Format(Now, "hh:mm:ss") End If neo: Exit Sub End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) X = Target.Value End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error GoTo etiqueta If Target.Value = "OTROS" Then Range(Target.Address, "W" & Target.Row).Interior.Color = RGB(255, 0, 0) End If If Target.Value = "ANALISIS INTEGRAL" Then Range(Target.Address, "W" & Target.Row).Interior.Color = RGB(255, 255, 0) End If If Target.Value = "RECHAZADA" Then Range(Target.Address, "W" & Target.Row).Interior.Color = RGB(128, 128, 128) End If etiqueta: Exit Sub End Sub

Por favor de su valiosa ayuda

Les agradezco de antemano.

publicado

Buen día giomemo !

Lo que puedes probar es lo siguiente:

Creas un nuevo Sub

sub todas()

La macro que quieras ejecutar primero Ej: Macro1

La macro que quieras ejecutar segundo Ej: Macro2

etc......

End Sub

Así con las macros que quieras ejecutar. Recuerda siempre en el orden que las quieras ejecutar.

Invitado Héctor Miguel
publicado

tienes una mezcla de "chile, mole y picadillo" entre eventos a nivel de libro y a nivel de hoja, además de nombres de procedimientos "repetidos" (o sea, copiaste de otros códigos) que no es valido en el ambiente vba, y pasando por algunos "controles de error" y condiciones que algunas contravienen a otras (?)

no estoy seguro de que tengas claro tanto las implicaciones de tales mezclas como de lo que (realmente) necesitas controlar (?)

en via de mientras, pongo "arreglados" los códigos que copiaste "sin ton ni son" (y sin etiqueta alguna) por si quieres ampliar la informacion (o alguien quiere echarse un clavado)

saludos,

hector.

Dim X As Variant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

X = Target.Value

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

If Target.Column <> 1 Then Exit Sub

Select Case UCase(Target.Text)

Case "SEP"

MsgBox "Solo se aceptan profesores de base"

Case "STEN 41"

MsgBox "Dato incorrecto" 'Aqui puedes añadir tantos casos como quieras

End Select

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo neo

If Intersect(Target, Range("E7:F454")) Is Nothing Or Target.Value = "OTROS" Then Exit Sub

If Intersect(Target, Range("E7:F454")) Is Nothing Or Target.Value = "PROCESO" Then Exit Sub

If Intersect(Target, Range("E7:F454")) Is Nothing Or Target.Value = "DELEGAR" Then Exit Sub

If Target.Value = "" And X = "DELEGAR" Then

Target.Offset(, 13).ClearContents

Else

Target.Offset(, 13) = Format(Now, "hh:mm:ss")

End If

neo: Exit Sub

End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

On Error GoTo etiqueta

If Target.Value = "OTROS" Then

Range(Target.Address, "W" & Target.Row).Interior.Color = RGB(255, 0, 0)

End If

If Target.Value = "ANALISIS INTEGRAL" Then

Range(Target.Address, "W" & Target.Row).Interior.Color = RGB(255, 255, 0)

End If

If Target.Value = "RECHAZADA" Then

Range(Target.Address, "W" & Target.Row).Interior.Color = RGB(128, 128, 128)

End If

etiqueta: Exit Sub

End Sub

publicado

Buen día. gracias Héctor Miguel por tu ayuda y una disculpa ayer subí los códigos por mi cel. desde la pagina de ayuda Excel y si fue algo difícil ya que mi cel. se desconectaba de la red y pues bueno hasta que al fin pude pero no llegaron bien. bueno te comento como tal estos macros que tengo los he utilizado en libros diferentes solo que ahora tengo que hacer un solo reporte lo cual requiere que se ejecuten estos mismos en una sola hoja de hecho hay uno que utilizo para un solo libro y los otros 2 para hojas diferentes de hecho intente colocarlos como worksheet pero me sale un error de ambiguacion de nombre hasta donde tengo entendido esto se debe a que no se pueden ejecutar 2 macros con la misma definición en una misma hoja por eso les comentaba esta situación ya que mi nivel en programación es muy básico ya que no lo he utilizado mucho solo para ciertas cosas que requiero en mi Excel. Adjunto mi reporte ya que solo he podido ejecutar dos macros una como sub workbook y otra como sub worksheet y la otra no se como agregarla para que se ejecuten o en dado caso agregar 1 o 2 mas es espera de su ayuda y de agradezco de su valioso tiempo.

- - - - - Mensaje combinado - - - - -

Anexo documento en donde e colocado al menos 2 macros y se ejecutan bien solo faltaría la tercera y en dado caso una cuarta que estoy realizando de su ayuda por favor.

REPORTE 16 MAR 2013.rar

Invitado Héctor Miguel
publicado

lo único que has hecho es poner los códigos tal-co... (mo te los sugiero), pero no los has analizado (p.e.)

1) "el otro" código que pretendes incluir (creo que) no tiene aplicación en la hoja del libro que adjuntaste ???

2) del que tienes incluido en el worksheet_change, específicamente estas líneas se contravienen...

If Intersect(Target, Range("E7:F454")) Is Nothing Or Target.Value = "DELEGAR" Then Exit Sub

If Target.Value = "" And X = "DELEGAR" Then

o sea, la primera evita/previene/prohíbe/... que se cumpla la segunda (todo el bloque if...else...end if)

3) todos tus manejos de error (on error.......) son para inhibir cualquier posible fallo en el código, PERO... nunca sabras que pudo fallar y... si no lo conoces tu... (ya mejor ni te digo)

hay mas, pero en resumidas cuentas (creo que) estas cometiendo un error (y retrasando tu aprendizaje) en tanto no comprendas lo que le estas diciendo a Excel (a través de los códigos) que "haga por ti" (???)

saludos,

hector.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.