¿Como puedo aplicar una macro a una hoja determinada de un documento de Microsoft Excel?

Recién estoy aprendiendo a aplicar macros a mis hojas de excel, y tengo muchas dudas, una de ellas es, como puedo hacer para que una macro solo se ejecute para una determinada hoja, aunque la ejecute desde otra hoja, ej: en Hoja1, en determinada casilla introducir un numero y que al ejecutar la macro, ¿en la hoja2 ese numero introducido en la hoja1 cumpla una operación? Si me pueden ayudar se los agradecería muchísimo

1 Respuesta

Respuesta
1
Coloca este ejemplo en un módulo, ejecútalo y observa el resultado:
Option Explicit
Dim miHoja1, miHoja2
Sub Hoja()
    miHoja1 = "Hoja1"
    miHoja2 = "Hoja2"
    Sheets(miHoja2).Select
    MsgBox "Estoy en la " & miHoja2 & ". Observa la pestaña de Hojas"
    Sheets(miHoja1).Select
    MsgBox "Ahora estoy en la " & miHoja1 & _
    ". Observa la celda A1... está vacía."
    Sheets(miHoja2).Select
    Sheets(miHoja1).Range("A1") = 10
    MsgBox "Vuelvo a estar en la " & miHoja2 & _
    ". Y desde aquí he puesto el valor 10 en la celda A1 de la Hoja1 "
End Sub
Observa la línea que dice : Sheets(miHoja1). Range("A1") = 10
Esta linea te coloca en la Hoja1 celda A1 el valor 10 sin importar en que hoja te encuentres.
Cualquier ayuda adicional me avisas.
Hola! Gracias por tu ejemplo, está fácil de comprender, pero no es eso lo que necesito, te explico, en la hoja 1 de mi libro, tengo que introducir ciertos números, y lo que quiero es que en la hoja 2, automáticamente se ejecute la macro, cierta operación que dependan de los datos que introduzca en la hoja 1.
Sabes lo que quiero aprender es, como trabaja los códigos, linea por linea para poder comprender mejor, te agradecería mucho si me das una mano. Gracias!
OK.
Coloca este código en la ventana de código de la Hoja1(Hoja1) en el editor del Visual basic
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        If Target.Value = "1" Then Rutina1 ' Ejecuta Rutina1
        If Target.Value = "2" Then Rutina2 ' Ejecuta Rutina2
        If Target.Value = "3" Then Rutina3 ' Ejecuta Rutina3
    End If
End Sub
Sub Rutina1()
    Sheets("Hoja2").Range("A1") = "Ejecutada Rutina 1"
    MsgBox "Ejecutada Rutina 1. Ver Hoja2, celda A1"
End Sub
Sub Rutina2()
    Sheets("Hoja2").Range("A1") = "Ejecutada Rutina 2"
    MsgBox "Ejecutada Rutina 2. Ver Hoja2, celda A1"
End Sub
Sub Rutina3()
    Sheets("Hoja2").Range("A1") = "Ejecutada Rutina 3"
    MsgBox "Ejecutada Rutina 3. Ver Hoja2, celda A1"
End Sub
¿Es lo que buscas?
Muchas gracias por tu ayuda, está todo bien, aunque me costó un poco, lo que pasa es que recién estoy aprendiendo hacer macros, pero me di cuenta, ahora tengo que practicar, te lo agradezco mucho de verdad, y espero que tengas paciencia conmigo para cuando tenga otras dudas, un saludo, y gracias nuevamente...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas