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").SelectPor esta
ActiveCell. Range("A1").SelectCambia "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