Tengo un problema con una macro, al ejecutarla en Visual Basic me aparece un error "Se ha producido el error 1004 en tiempo de."

Tengo un problema con una macro, al ejecutarla en Visual Basic me aparece un error "Se ha producido el error 1004 en tiempo de ejecución". Luego de esto doy click en Depurar y aparece resaltada una línea en color amarillo. No se de que forma corregirla.

1 Respuesta

Respuesta
2

Puedes poner la macro completa y también en cuál línea se detiene.

Sub facturas()

'

' facturas Macro

'

' Acceso directo: CTRL+s

'

    Selection.Copy

    Sheets("Macro Registro").Select

    ActiveCell.Offset(0, -6).Range("A1").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("C7:E7").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("B7").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("F7:I7").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    ActiveWindow.SmallScroll Down:=6

    Range("D19").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("E19").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("G19").Select

    Application.CutCopyMode = False

    Selection.Copy

    ActiveCell.Offset(9, 3).Range("A1").Select

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("H19").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("I20:J20").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("C21:E21").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("G20").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(0, 1).Range("A1").Select

    Sheets("Macro Factura").Select

    Range("C20:E20").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Macro Registro").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    ActiveCell.Offset(1, -11).Range("A1").Select

    Sheets("Macro Factura").Select

    ActiveWindow.SmallScroll Down:=-9

    ActiveCell.Offset(-15, 2).Range("A1:C1").Select

End Sub

El problema de esa línea, es que le estás diciendo que seleccione 6 celdas a la izquierda, si el cursor de excel está en una columna cualquier columna de la A a la E, y retrocedes 6 celdas a la izquierda entonces ya no hay más celdas, por eso envía el mensaje de error.

Para corregirlo, debes indicarle en cuál celda se va a realizar el primer pegado, por ejemplo:

Cambia esta línea:

ActiveCell.Offset(0, -6). Range("A1").Select

Por esta

ActiveCell. Range("A1").Select

Cambia "A1" por la celda en la que quieres iniciar el pegado.


Es difícil controlar, tanto el copiado como el pegado, utilizando select y offset (yo la consideraría una mala práctica), ya que antes de ejecutar la macro tienes que saber en dónde está el cursor de excel en las 2 hojas.

Si gustas puedo crear una nueva macro, solamente me tienes que explicar con ejemplos qué quieres copiar y exactamente en dónde lo quieres pegar.

Sal u dos

Muchas gracias

Si, agradecería me diera un correo para explicar en detalle

Saludos

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Wendy Ardila Chaves

¡Gracias! Ya lo envié.

Te anexo la macro

Sub Registrar_Factura()
'Por.Dante Amor
    Set h1 = Sheets("Macro Factura")
    Set h2 = Sheets("Macro Registro")
    '
    'obtiene la siguiente fila vacía de la hoja registro según la columna B
    f = h2.Range("B" & Rows.Count).End(xlUp).Row + 1
    '
    H2.Cells(f, "B") = h1. Range("E5") 'fecha
 h2.Cells(f, "C") = h1. Range("C7") 'cant
 h2.Cells(f, "D") = h1. Range("B7") 'cod
 h2.Cells(f, "E") = h1. Range("F7") 'val
 h2.Cells(f, "F") = h1. Range("D19") 'cant pe
 h2.Cells(f, "G") = h1. Range("E19") 'val pe
 h2.Cells(f, "H") = h1. Range("G19") 'cant pf
 h2.Cells(f, "I") = h1. Range("H19") 'val f
 h2.Cells(f, "J") = h1. Range("I20") 'nomb ven
 h2.Cells(f, "K") = h1. Range("C21") 'nomb cli
 h2.Cells(f, "L") = h1. Range("G20") 'cant tot
 h2.Cells(f, "M") = h1. Range("C20") 'val tot
    MsgBox "Registro creado", vbInformation, "CREAR REGISTRO FACTURA"
End Sub

[R ecuerda cambiar la valoración a la respuesta.

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas