Coincidir mes y copiar valor de otra celda en otra hoja

Tal como te mencionaba, necesito la misma macro que lleva el nombre, la que me ayudaste a dejar completa, pero necesito por favor que los datos vayan en otra hoja, ya que moví la parte final para otra hoja. Sólo ayudarme con la sintaxis, para que cuando ejecute la macro los datos los copie a la nueva hoja.

1 respuesta

Respuesta
1

H o l a:

No sé cuáles celdas están en la hoja1 y cuál celdas van en la hoja2.

Te anexo la macro con la sintaxis. Solamente tienes que cambiar h1 si las celdas están en la hoja1 y h2 si las celdas están en la hoja2

Sub CopiarValor()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")    'hoja origen
    Set h2 = Sheets("Hoja2")    'hoja destino
    If Not IsDate(h1.[D8]) Then
        MsgBox "La celda D8 no contiene una fecha"
        [D8].Select
        Exit Sub
    End If
    mes = Month(h1.[D8])
    año = Year(h1.[D8])
    For i = 2 To h1.Cells(42, Columns.Count).End(xlToLeft).Column
        If Month(h1.Cells(42, i)) = mes And Year(h1.Cells(42, i)) = año Then
            h2.Cells(43, i) = h1.[E32]
            MsgBox "Valor copiado", vbInformation
            'Cells(43, i).Select
            existe = True
            Exit For
        ElseIf (Month(h1.Cells(42, i)) > mes And Year(h1.Cells(42, i)) = año) Or _
               (Year(h1.Cells(42, i)) > año) Then
            MsgBox "La fecha es anterior al inicio del proyecto", vbExclamation
            existe = True
            Exit For
        End If
    Next
    If existe = False Then
        MsgBox "La fecha no existe en el proyecto"
    End If
End Sub


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Estimado, muy agradecido, pero tiene dos detalles.

1° No puedo ejecutar la macro más allá de octubre de 2016
2° cuando ejecuta la macro no se activa la celda de la página de destino (h2.Cells(63, i).Select). El código es el siguiente:

Sub CopiarValor()
    Set h1 = Sheets("AVANCE") hoja de origen
    Set h2 = Sheets("RESUMEN") hoja de destino
    If Not IsDate(h1.[G10]) Then
    MsgBox "Ingrese Fecha de Control", vbInformation, "PMO"
    [G10].Select
        Exit Sub
    End If
    mes = Month(h1.[G10])
    año = Year(h1.[G10])
    For i = 2 To Cells(54, Columns.Count).End(xlToLeft).Column
        If Month(h2.Cells(54, i)) = mes And Year(h2.Cells(54, i)) = año Then
            h2.Cells(56, i) = h1.[Q921]
            h2.Cells(63, i) = h1.[R921]
            MsgBox "Avance Ejecutado Exitosamente", vbInformation, "PMO"
            h2.Cells(63, i).Select
            existe = True
            Exit For
        ElseIf (Month(h2.Cells(54, i)) > mes And Year(h2.Cells(54, i)) = año) Or _
               (Year(h2.Cells(54, i)) > año) Then
            MsgBox "La Fecha es Anterior al Inicio del Proyecto", vbExclamation, "PMO"
            existe = True
            Exit For
        End If
    Next
    If existe = False Then
        MsgBox "La Fecha es Posterior al Fin del Proyecto", vbExclamation, "PMO"
    End If
End Sub

De antemano muchas gracias

Antes de esta línea

h2.Cells(63, i).Select

Tienes que poner 

h2.select


Tienes que poner en la fila 54 las fechas, la macro lee las columnas que están en la fila 42, solamente tienes que aumentar en la fila 54 las fechas

Estimado Dante,

Lo de h2.select funcionó correctamente, muchas gracias, pero lo que me dices no funciona, efectivamente tengo las fechas en la h2 (RESUMEN) en la celda 54, pero como te mencionaba anteriormente solamente ejecuta la macro hasta octubre de 2016.

De antemano muchas gracias

Tengo que revisar cómo están los datos y cómo está la macro.

Envíame tu archivo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Cristian Majluf” y el título de esta pregunta.

Estimado,

Lo acabo de enviar.

Gracias

Listo:

Sub CopiarValor()
'Por.Dante Amor
    Set h1 = Sheets("AVANCE")
    Set h2 = Sheets("RESUMEN")
    If Not IsDate(h1.[G10]) Then
        MsgBox "Ingrese Fecha de Control", vbInformation, "PMO"
        [G10].Select
        Exit Sub
    End If
    mes = Month(h1.[G10])
    año = Year(h1.[G10])
    For i = 3 To h2.Cells(54, Columns.Count).End(xlToLeft).Column
        If Month(h2.Cells(54, i)) = mes And Year(h2.Cells(54, i)) = año Then
            h2.Cells(56, i) = h1.[Q921]
            h2.Cells(63, i) = h1.[R921]
            MsgBox "Avance Ejecutado Exitosamente", vbInformation, "PMO"
            h2.Select
            h2.Cells(63, i).Select
            existe = True
            Exit For
        ElseIf (Month(h2.Cells(54, i)) > mes And Year(h2.Cells(54, i)) = año) Or _
               (Year(h2.Cells(54, i)) > año) Then
            MsgBox "La Fecha es Anterior al Inicio del Proyecto", vbExclamation, "PMO"
            existe = True
            Exit For
        End If
    Next
    If existe = False Then
        MsgBox "La Fecha es Posterior al Fin del Proyecto", vbExclamation, "PMO"
    End If
'ActiveSheet.Protect Password:="infra"
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas