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
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
Mi correo [email protected]
En el asunto del correo escribe tu nombre de usuario “Wendy Ardila Chaves”
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
.
- Compartir respuesta