MACRO contar si. Para ejecutar en otra hoja y en celda activa

Necesito el inmenso favor de ayuda de uds.

Necesito una macro que se ejecute en otra hoja diferente a la que estoy activo.

Ejemplo estoy en la "Hoja5" fila 10, pero que la macro se ejecute en la "Hoja1" y en esta "hoja1" hay la siguiente informacion:

En la celda "GSW" de la fila activa, si su valor 1, copie o concatene la celda de la columna "GSY" (el cual contiene una celda con números en formato texto eje: 001) y pegue ese texto en la celda de la columna "GYT" de la fila tambien donde este activo. Y si no se cumplen estas condiciones o si en la fila de la columna inicial que mencione no dice 1, sencillamente la macro no copie ni pegue nada.

Espero me haya hecho entender, tal vez sea sencilla pero no pude :(...

2 Respuestas

Respuesta
3

[Hola

Si estás en la "Hoja5" en una celda de la fila 10, pues esas son las activas, en términos correctos es imposible que haya otra celda activa de otra hoja, así la macro ejecute algo en dicha última hoja. Quizá lo que quisiste decir es que si en la "Hoja5" la celda activa está en la fila 10, pues que la macro actúe también en la fila 10 de esa otra hoja ¿Es así? Confirma, porque de ser eso, ayudarte no toma ni 5 minutos.

Si así es exactamente. Solo que lo decía para ser claro. Aunque suene obvio je je. Pero así es... si estoy en la fila 10 de la hoja 5 que la macro actúe en la hoja 1 con los datos de la hoja 1 :)

Ajá, solo hay algo que no me queda claro:

- Si la celda de la columna GSW es igual a 1, entonces...
- Copiar la celda de la columna GSY en la columna GYT. ¿Copiar tal cual? Digo porque usaste la palabra concatenar que es distinta a copiar. ¿O hay "algo" en GYT y lo que quieres es que se agregue también lo de GSY?

Copiarla tal cual. Tienes razón. Concatenar no es el termino correcto. Si GSW dice 1, copie la celda GSY y la pegue tal cual en la GYT, y si la GSW dice un valor diferente. No haga obsolutamente nada la macro

Prueba

Sub GYZ()
Dim nFilaH5 As Long
nFilaH5 = ActiveCell.Row
If Worksheets("Hoja1").Range("GSW" & nFilaH5) = 1 Then
    Worksheets("Hoja1").Range("GYT" & nFilaH5) = Worksheets("Hoja1").Range("GSY" & nFilaH5)
    MsgBox "COpiado"
    Exit Sub
End If
MsgBox "No hice nada"
End Sub

Lo he hecho de memoria, ya tu afínalo de hacer falta. Ojo, si en GSY hay algún formato que quieres mantener, reemplaza por esto la  línea respectiva:

Worksheets("Hoja1").Range("GSY" & nFilaH5).Copy Destination:=Worksheets("Hoja1").Range("GYT" & nFilaH5)
Respuesta
3

Buen aporte Abraham Valencia,

Solamente un tip para los demás lectores; para evitar escribir varias veces la misma hoja, se puede hacer referencia de la siguiente manera:

Sub copiaCelda()
  Dim fila As Long
  fila = ActiveCell.Row
  With Sheets("Hoja1")
    If .Range("GSw" & fila).Value = 1 Then
      .Range("GSY" & fila).Copy .Range("GYT" & fila)
    End If
  End With
End Sub

Es un ejemplo, existen otras formas, solamente quería mostrar una de ellas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas