Copiar valor de una celda a otra, se la celda es mayor a cero ( continua ?)

Como vez en la macro la idea es que copie el valor de varias celdas a partir de una celda si su valor es mayor que cero, en este caso si "B10" de la hoja "registro" es mayor que cero, entonces copie el valor de "B10" a la hoja "consec doc" en la celda "B60000", que copie la celda "F5" de la hoja "registro"a la hoja "consec doc", en la celda "C60000". Ahora también si la celda "B11" de la hoja "registro" es mayor que cero, copie su valor en la celda "B59999", que copie la celda "F5" de"registro" en "consec doc" en la celda "C59999". Y así según las celdas que yo necesite. Hasta ahí tu macro me funciona perfectamente. El problema que tengo es que si la la celda "B11" no es mayor que cero, aun asi copia la informacion de la celda "F5" a la celda "C59999" y lo que quiero es que si la celda "B11" no es mayor que cero, no copie la información de la celda "F5".

Gracuas por la ayuda

1 Respuesta

Respuesta
1

H o l a:

La macro está bien, tal vez tienes un espacio u otro caracter en la celda B11, es por eso que te hace la copia.

Te anexo la macro actualizada, le hice algunos cambios. Le puse un ciclo para que empiece en B10 y termine en B12, si quieres más celdas, entonces cambia el 12 por el número de fila que desees.

Sub GUARDARDUI()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("REGISTRO")
    Set h2 = Sheets("CONSEC DOC")
    '
    Respuesta = MsgBox("DESEA GUARDAR EL DUI", vbYesNo + vbQuestion, "Macro")
    If Respuesta = vbNo Then Exit Sub
    '
    j = 60000
    For i = 10 To 12
        If h1.Cells(i, "B") > 0 Then
            h2.Range("B" & j) = h1.Range("B" & i)
            h2.Range("C" & j) = h1.[F5]
            h2.Range("D" & j) = h1.[F6]
            h2.Range("E" & j) = h1.[H6]
            h2.Range("F" & j) = h1.[D5]
            h2.Range("G" & j) = h1.[D6]
            h2.Range("H" & j) = h1.[D3]
            h2.Range("I" & j) = h1.Range("C" & i)
            h2.Range("J" & j) = h1.Range("D" & i)
            h2.Range("K" & j) = h1.Range("E" & i)
            h2.Range("L" & j) = h1.Range("F" & i)
            h2.Range("M" & j) = h1.Range("G" & i)
            h2.Range("N" & j) = h1.Range("H" & i)
            h2.Range("O" & j) = h1.[C23]
            h2.Range("P" & j) = h1.[C33]
            h2.Range("Q" & j) = h1.[D33]
            j = j - 1
        End If
    Next
    With h2.Sort
        .SortFields.Clear
        .SortFields.Add Key:=h2.Range("B2:B60000"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange h2.Range("B2:Q60000"): .Header = xlGuess
        .MatchCase = False: .Orientation = xlTopToBottom
        .SortMethod = xlPinYin: .Apply
    End With
    Application.ScreenUpdating = False
    MsgBox "Proceso terminado", vbInformation
End Sub

Excelente gracias, creo que copia las celdas aunque "B" no tiene valores si tiene una fórmula, ¿es por eso? Y si es así que puedo hacer para no quitar la fórmula, porque si quito la fórmula tu macro funciona perfectamente como lo necesito.

Muchas gracias

Pon tu fórmula para ver cómo la tienes

Mira la fórmula es =si(c10>0;H5;"") esta es la fórmula, muchas gracias!!! Por la ayuda

Nota:la fórmula esta copiada en las celdas de la b10 a la b20

Gracias

Mira corrijo la fórmula es =si(C10>0;$H$5;"")

Cambia en la macro

Esta línea

If h1.Cells(i, "B") > 0 Then

Por esta:

If Val(h1.Cells(i, "B")) > 0 Then

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas