¿Qué sintaxis puedo desarrollar para copiar un valor en una celda que se encuentra en la hoja uno y pegarla en la hoja 2 VBA?

Tengo una base de datos con muchos parámetros, para ello hice una macros que busca el valor en la base, lo selecciona y lo pega en otra hoja del mismo Excel, el problema es el siguiente: Las celdas en blanco las ignora, y en la base tienen un valor importante.

Este es mi código, el cual busca, selecciona y pega en la hoja 2 en las celdas vacías, pero no lo puedo adaptar para que siga y me copie la celda vacía.

Sub reporte()
Application.ScreenUpdating = False

Dim a As Integer
Dim ax As Integer
Dim b As Integer
Dim c As Integer
Dim cc As Integer
Dim x As Integer
Dim xx As Integer
Dim d As String
Dim e As String
Dim f As String
Dim celda As String
Dim celdax As String

a = 0
ax = 0
b = 0
c = 0
d = Cells(1, 1)
e = Cells(2, 1)
For a = 1 To 1000
Sheets("Consolidado").Select
If Cells(1 + a, 2) = d And Cells(1 + a, 5) = e Then
Cells(1 + a, 1).Select
Selection.Copy
Sheets("REPORTE").Select
For c = 1 To 1000
celda = Range(Cells(c + 6, 1), Cells(c + 6, 1)).Value
If celda = "" Then
x = c
Range(Cells(x + 6, 1), Cells(x + 6, 1)).Select
c = 1001
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End If
Next c
End If
Next a

Sheets("REPORTE").Select
Range("A156456").Select
End Sub

1 Respuesta

Respuesta
1

No entendí muy bien tu macro, sobre todo porque no sé qué valores tienes en las celdas: Cells(1, 1) y Cells(2, 1)

Tampoco entendí esto: "no lo puedo adaptar para que siga y me copie la celda vacía"

Explícame qué tienes en las celdas Cells(1, 1) y Cells(2, 1) de cuál hoja y dime qué quieres que suceda y en cuál hoja. Reviso tu macro y te la actualizo o creo una nueva, pero debes explicar con ejemplos

Te explico,  tengo una base datos que la deseo manejar y copiar solo los elementos que cumplan con los requisitos que el usuario seleccione, para ello tengo unos filtros que me arrojan dos parámetros de  búsqueda que se encuentran en la celda (1,1) y (2,1) respectivamente, mi código lo   que hace es buscar los parámetros en la base y los que coincidan los trae a otra hoja respectivamente, el problema es que si en la base hay una celda en blanco este lo trae a la nueva hoja y luego busca otro parámetro si coinciden lo vuelve a traer a la hoja, pero lo pega en el espacio en blanco,  he tratado de indicarle al código que si la celda que trae desde la base esta en blanco la pegue igual y baje a la celda próxima.

Por ejemplo tengo un tablero con los filtros mencionados anteriormente, mi idea es buscar en la base de datos los parámetros elegidos por el usuario y pegarlos en el formulario, el problema es que en la base hay celdas en blanco por definición.

Para ser más especifico se da el caso que la celda s3 de la base de datos cumple con el requerimiento y se pega en la columna e7 del formulario, el parámetro de la siguiente fila también cumple y se pega en la columna e8(en blanco). El problema es el siguiente, al buscar el siguiente parámetro que cumpla con el requisito, lo pega en la columna E8 del formulario ya que estaba en blanco.

Me gustaría que el valor contenido se pegue en la siguiente fila(E9) y así sucesivamente, ya que las celdas en blanco en este caso son de importancia.

Saludos y gracias por el tiempo.

Perdona, pero no pusiste un ejemplo de lo que tienes en las celdas cells(1,1) ni cells(1,2).

Tengo que ver qué pones en esas celdas, también tengo que ver qué tienes en la hoja consolidado, saber qué registros coinciden con esas 2 celdas y cómo quieres el resultado en la hoja reporte.

Pero tu hoja reporte está en blanco y en tu hoja consolidado no veo lo que tienes en las columnas B y E

Hagamos lo siguiente.

Envíame tu archivo con la hoja consolidado, en la hoja reporte me dices qué datos pones en las 2 celdas y qué esperas en la hoja reporte, no ejecutes la macro, deberás llenar la hoja reporte manualmente con los datos resultantes, de esa forma podré ver qué datos tiene que pasar la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “matias perez

Te anexo la macro actualizada

Sub botonreporte()
'Act Por Dante Amor
    '
    Application.ScreenUpdating = False
    Set h1 = Sheets("Consolidado")
    Set h2 = Sheets("REPORTE")
    h2.Range("A7:O" & Rows.Count).ClearContents
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    ambito = h2.Cells(1, 1)
    proyec = h2.Cells(2, 1)
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    j = 7
    For i = 3 To u
        If h1.Cells(i, "B") = ambito And h1.Cells(i, "E") = proyec Then
            h2.Cells(j, "A") = h1.Cells(i, "A") 'iniciativa
            h2.Cells(j, "B") = h1.Cells(i, "B") 'ambito
            h2.Cells(j, "C") = h1.Cells(i, "C") 'responsable
            h2.Cells(j, "D") = h1.Cells(i, "S") 'tiempo de captura
            h2.Cells(j, "E") = h1.Cells(i, "T") 'alerta
            h2.Cells(j, "F") = h1.Cells(i, "Z") 'total vble impacto
            h2.Cells(j, "G") = h1.Cells(i, "A") 'etapa*
            h2.Cells(j, "H") = h1.Cells(i, "A") 'fecha de ingreso*
            h2.Cells(j, "I") = h1.Cells(i, "A") 'fecha de termino*
            h2.Cells(j, "J") = h1.Cells(i, "A") 'alerta*
            h2.Cells(j, "K") = h1.Cells(i, "AL") 'factibilidad
            h2.Cells(j, "L") = h1.Cells(i, "AM") 'cuadrante
            h2.Cells(j, "M") = h1.Cells(i, "AN") 'tiempo iniciativa
            h2.Cells(j, "N") = h1.Cells(i, "H") 'estado iniciativa
            h2.Cells(j, "O") = h1.Cells(i, "AR") 'no. cambios
            j = j + 1
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox ("Proceso Finalizado")
End Sub

Según revisé en tus macro, tienes una macro por columna, no son necesarias, solamente necesitas una macro.

Los datos que tienen * no supe cuál era su destino en la hoja "reporte", solamente pon la letra de la columna correspondiente.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas