Excel - cómo pasar el código de una hoja a un módulo pero convertido en una macro

 
Vista:
Imágen de perfil de celia
Val: 761
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por celia (437 intervenciones) el 19/09/2019 15:32:10
Buenas

Ahora tengo este código en una hoja pero quería hacer una macro con el y moverlo a un módulo nuevo.

Intenté crear un módulo nuevo y ponerle al inicio el nombre de la macro: Sub ABC()
Luego le pegué este código que es es que sí funciona en la hoja pero no sé qué falta o sobra o si hay comandos incompatibles con las macros.
Quiero hacer un botón para ejecutar esta macro cuando pulse sobre el y por eso tengo que quitar el código de la hoja y pasarlo a un módulo.

Gracias de antemano a todos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub ABC()
 
Private Sub worksheet_change(ByVal Target As Excel.Range)
On Error GoTo Salir
    If (Target.Address = "$A$1") And ([H7] = "A") Then
      Application.Speech.SpeakCellOnEnter = True
      Range("B1").Speak
 Application.Speech.SpeakCellOnEnter = False
 
   ElseIf (Target.Address = "$A$3") And (UCase(Left(Target, 1)) = "B") Then
      Application.Speech.SpeakCellOnEnter = True
      Range("B2").Speak
      Application.Speech.SpeakCellOnEnter = False
 
 ElseIf (Target.Address = "$B$3") And (UCase(Left(Target, 1)) = "C") Then
      Application.Speech.SpeakCellOnEnter = True
      Range("B3").Speak
      Application.Speech.SpeakCellOnEnter = False
   End If
Salir:
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de alfredo lara
Val: 363
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por alfredo lara (120 intervenciones) el 19/09/2019 16:37:05
Buen día Celia

Prueba esto


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Sub ABC()
   '
   On Error GoTo Salir
   '
   If ActiveCell.Address = "$A$1" And (Hoja1.[H7] = "A") Then
      Application.Speech.SpeakCellOnEnter = True
      Hoja1.[B1].Speak
      Application.Speech.SpeakCellOnEnter = False
      '
   ElseIf ActiveCell.Address = "$A$3" And (UCase(Left(ActiveCell, 1)) = "B") Then
      Application.Speech.SpeakCellOnEnter = True
      Range("B2").Speak
      Application.Speech.SpeakCellOnEnter = False
      '
   ElseIf (ActiveCell.Address = "$B$3") And (UCase(Left(ActiveCell, 1)) = "C") Then
      Application.Speech.SpeakCellOnEnter = True
      Range("B3").Speak
      Application.Speech.SpeakCellOnEnter = False
   End If
   '
Salir:
   '
End Sub

El código lo llamas desde un botón, espero te sirva

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de celia
Val: 761
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por celia (437 intervenciones) el 19/09/2019 19:59:12
Hola Alfredo. Muchas gracias por responder.

No acaba de funcionar la macro.
Subo el archivo con dos hojas.
En la hoja1 hice un botón con enlace a la macro que no acaba de funcionar
y en la hoja2 se ve como funciona el código que quería que funcionara en la hoja1 con la macro para borrar esta hoja2 después.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfredo
Val: 363
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por Alfredo (120 intervenciones) el 19/09/2019 21:27:10
Hola Celia

Prueba con el siguiente archivo.

Estaré atento a tu respuesta

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de celia
Val: 761
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por celia (437 intervenciones) el 19/09/2019 22:35:06
FENOMENAL !!!
Mil gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dirk
Val: 455
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por Dirk (166 intervenciones) el 19/09/2019 22:57:32
Hola Celia, Alfredo, mis observaciones, hay que tener cuidado con lo quieres hacer, la macro en Hoja2 se ejecuta cuando alguna celda cambia, por consiguiente tienes que detectar cual es la cambió mientras que en la macro del módulo no hace lo mismo porque no tiene forma de saber que celda fue la que cambió, así que cuando la ejecutas va a validar el 1er IF, efectivamente va a ejecutar lo que está dentro, luego se sale y no pasa por los demás IF, esto pasa porque los IF están anidados, tendrías que hacerlo por separado para que la macro valide cada celda, por eso te digo que debes que tener cuidado con lo que quieres hacer.....

Lo otro es que si llamas la macro desde otra hoja, digamos una Hoja3, tal y como está va a validar las celdas de la Hoja1 porque en la macro hace referencia a esas celdas.....

Salu2
Dirk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alfredo
Val: 363
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por Alfredo (120 intervenciones) el 19/09/2019 23:23:38
Uuups tienes mucha razón Dirk, no valida las 3 celdas ya que se sale a la primera validación, por otra parte espero que la buena amiga Celia solo use la hoja 1 de su archivo, si no es así deberá cambiar dicha referencia.

Gracias por la observación

Saludos

P.D. adjunto archivo corregido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de celia
Val: 761
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por celia (437 intervenciones) el 22/09/2019 14:26:10
Muchas gracias de nuevo Alfredo por enviarlo corregido con lo que comentó Dirk porque creo que yo no hubiera sabido hacerlo aunque al comparar ahora los códigos parezca más fácil de lo que es.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de celia
Val: 761
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo pasar el código de una hoja a un módulo pero convertido en una macro

Publicado por celia (437 intervenciones) el 22/09/2019 14:20:14
Hola Dirk.
Muy buena tu apreciación y aclaración. Al final aprendo poco a poco y creo que ya entendí eso de anidar código.
Usaré la última corrección que hizo Alfredo con tus indicaciones y borraré la hoja2.

Muchas gracias !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar