Saltar al contenido

Se ha producido el error '1004' en tiempo de ejecución


Recommended Posts

publicado

Hola amigos:

Tengo el siguiente código:


Public Buscarhoja As String
Private Sub UserForm_Initialize() 'Al iniciar el userform
Application.Visible = False 'Ocultar la Aplicación Excel
End Sub
Private Sub UserForm_Terminate() 'Al cerrar el userform
Application.Visible = True 'Mostrar la Aplicación Excel
End Sub
Private Sub UserForm_Activate()
'cargar número
TextBox20 = Sheets("EXTRAS").Range("O1") + 1
'Cargar combobox
ComboBox1.RowSource = "FP"
ComboBox4.RowSource = "LA"
ComboBox5.RowSource = "EP"
p = Sheets("CLIENTES").Range("C1").End(xlDown).Row
ComboBox2.RowSource = "CLIENTES!D2:D" & p
End Sub
Private Sub TextBox1_Change()
'Formato de fecha
End Sub
Private Sub ComboBox1_Enter()
ComboBox1.BackColor = vbYellow
End Sub
Private Sub TextBox18_Enter()
TextBox18.BackColor = vbYellow
End Sub
Private Sub ComboBox2_Enter()
ComboBox2.BackColor = vbYellow
End Sub
Private Sub ComboBox2_Change()
'cargamos los datos
Dim busq As Range
On Error GoTo o
Set busq = Sheets("CLIENTES").Cells.Find(ComboBox2, lookat:=xlWhole)
ComboBox3 = busq.Offset(0, -1)
Exit Sub
o: ComboBox3 = ""
End Sub
Private Sub ComboBox3_Enter()
ComboBox3.BackColor = vbYellow
End Sub
Private Sub ComboBox4_Enter()
ComboBox4.BackColor = vbYellow
End Sub
Private Sub ComboBox4_change()
'Carga textbox segun combobox
Set b = Sheets("EXTRAS").Range("H:H").Find(ComboBox4)
If Not b Is Nothing Then
TextBox2 = Sheets("EXTRAS").Range("I" & b.Row)
End If
End Sub
Private Sub TextBox2_Enter()
TextBox2.BackColor = vbYellow
End Sub
Private Sub TextBox3_Enter()
TextBox3.BackColor = vbYellow
End Sub
Private Sub TextBox4_Enter()
TextBox4.BackColor = vbYellow
End Sub
Private Sub TextBox5_Enter()
TextBox5.BackColor = vbYellow
End Sub
Private Sub TextBox6_Enter()
TextBox6.BackColor = vbYellow
End Sub
Private Sub TextBox7_Enter()
TextBox7.BackColor = vbYellow
End Sub
Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox7.BackColor = vbWhite
End Sub
Private Sub TextBox8_Enter()
TextBox8.BackColor = vbYellow
End Sub
Private Sub TextBox19_Change()
'Formato de fecha
Private Sub TextBox19_Enter()
'Cambia fondo
TextBox19.BackColor = vbYellow
End Sub
Private Sub TextBox9_Enter()
TextBox9.BackColor = vbYellow
End Sub
Private Sub TextBox10_Enter()
TextBox10.BackColor = vbYellow
End Sub
Private Sub TextBox11_Enter()
TextBox11.BackColor = vbYellow
End Sub
Private Sub TextBox12_Enter()
TextBox12.BackColor = vbYellow
End Sub
Private Sub TextBox12_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox12.Value = Format(Val(TextBox12), "#,##0.00")
TextBox12.BackColor = vbWhite
End Sub
Private Sub TextBox13_Enter()
TextBox13.BackColor = vbYellow
End Sub
Private Sub TextBox14_Enter()
TextBox14.BackColor = vbYellow
End Sub
Private Sub TextBox15_Enter()
suma = CDbl(TextBox13) + CDbl(TextBox14) 'suma de dos textbox
TextBox15 = Format(suma, "0.00")
'suma = Val(TextBox13.Text) + Val(TextBox14.Text)
'TextBox15.Text = Str(suma)
TextBox15.BackColor = vbYellow
End Sub
Private Sub ComboBox5_Enter()
ComboBox5.BackColor = vbYellow
End Sub
Private Sub ComboBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox5.BackColor = vbWhite
End Sub
Private Sub TextBox16_Enter()
TextBox16.BackColor = vbYellow
End Sub
Private Sub TextBox16_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox16.BackColor = vbWhite
End Sub
Private Sub TextBox17_Enter()
TextBox17.BackColor = vbYellow
End Sub
Private Sub CommandButton1_Click() ': On Error GoTo HayErrores
'verificar si boleto esta duplicado
dato = TextBox3.Value
contarsi = Application.WorksheetFunction.CountIf(Sheets("BOLETOS").Columns("I:I"), dato)
If contarsi > 1 Then
MsgBox "El boleto ya existe, no se permite duplicado"
TextBox3.SetFocus
Else
'registrodeboleto
'Numerador
TextBox20 = Val(TextBox20) + 1
TextBox20 = Sheets("EXTRAS").Range("O1") + 1
Sheets("EXTRAS").Select
ActiveSheet.Unprotect Password:="jmp"
Sheets("EXTRAS").Range("O1") = Sheets("EXTRAS").Range("O1") + 1
ActiveSheet.Protect Password:="jmp"
Application.ScreenUpdating = False
'ahora a pasar a su karkex
'establezco en qué libro volcar los datos, según la letra inicial del combo
Librok = "CuentasporcobrarTT.xlsm"
hojita = ComboBox3.Value
Workbooks(Librok).Sheets(hojita).Cells(a7).End(xlDown).Select
ActiveSheet.Range("A7").End(xlDown).Select
'busco la primer fila libre en libro destino
libre = Workbooks(Librok).Sheets(hojita).Range("A7").End(xlDown).Row + 1
'comienza el pase - ajustar
Workbooks(Librok).Sheets(hojita).Cells(libre, 1).Rows(Row + 1).Selection.EntireRow.Insert
Workbooks(Librok).Sheets(hojita).Cells(libre, 1).Value = CDate(TextBox1.Text) 'fecha
Workbooks(Librok).Sheets(hojita).Cells(libre, 2).Value = ComboBox4.Text 'la
Workbooks(Librok).Sheets(hojita).Cells(libre, 3).Value = TextBox2.Text 'cod
Workbooks(Librok).Sheets(hojita).Cells(libre, 4).Value = TextBox3.Text 'tkt
Workbooks(Librok).Sheets(hojita).Cells(libre, 5).Value = TextBox4.Text 'r1
Workbooks(Librok).Sheets(hojita).Cells(libre, 6).Value = TextBox5.Text 'r2
Workbooks(Librok).Sheets(hojita).Cells(libre, 7).Value = TextBox6.Text 'r3
Workbooks(Librok).Sheets(hojita).Cells(libre, 8).Value = TextBox7.Text 'r4
Workbooks(Librok).Sheets(hojita).Cells(libre, 9).Value = TextBox8.Text 'r5
Workbooks(Librok).Sheets(hojita).Cells(libre, 10).Value = TextBox9.Text 'pax
Workbooks(Librok).Sheets(hojita).Cells(libre, 11).Value = CDbl(TextBox12.Text) 'tt BS
Workbooks(Librok).Sheets(hojita).Cells(libre, 12).Value = CDbl(TextBox15.Text) 'tt $US
End If
Application.ScreenUpdating = True
End Sub

[/CODE]

[b]Bueno al momento de ejecutar la macro me sale el siguiente error:[/b]

Se ha producido el error '1004' en tiempo de ejecución:

Error definido por la aplicación o el objeto

Ayuudddddaaaaa por favorrrr, esta macro es de vital importancia para mi persona

Gracias por su tiempo y colaboración, reciban cordiales saludo

Atentamente,

Jesús

publicado

amigo, lo mas probable es esto Cells(a7), debería ser Cells("a7")

sino, cambia esto

Librok = "CuentasporcobrarTT.xlsm"
hojita = ComboBox3.Value
Workbooks(Librok).Sheets(hojita).Cells(a7).End(xlDown).Select
[/CODE]

por esto, debes activa el libro con el cual quieres trabajar

[CODE]Librok = "CuentasporcobrarTT.xlsm"
hojita = ComboBox3.Value
Workbooks(Librok).Activate
Workbooks(Librok).Sheets(hojita).Cells("a7").End(xlDown).Select[/CODE]

publicado

Gracias por responder estimado bigpetroman pero me sale el siguiente mensaje

Se ha producido el error '438' en tiempo de ejecución : El objeto no admite esta propiedad o método

Y señala a :

Workbooks(librok).Sheets(hojita).Cells(libre, 1).Rows(Row + 1).Selection.EntireRow.Insert

Subi el archivo para que por favor le des una revisada, gracias por tu ayuda

Un abrazo

Jesús

La contraseña para abrir es JMP

publicado

no he revisado los archivos, si estan en excel 2007 o superior, por favor guardalos en 2003 para revisarlos mañana en el trabajo, tengo problemas con el internet de la casa, de todas formas esta línea esta mala

Workbooks(librok).Sheets(hojita).Cells(libre, 1).Rows(Row + 1).Selection.EntireRow.Insert[/CODE]

quita el [b]Selection.[/b] y debería funcionarte, suerte

publicado

Amigo, cambia esto,

Workbooks(librok).Sheets(hojita).Cells(libre, 1).Rows(Row + 1).Selection.EntireRow.Insert[/CODE]

por esto otro

[CODE]Workbooks(librok).Sheets(hojita).Cells(libre, 1).EntireRow.Insert[/CODE]

de todas formas eso no tiene sentido que lo hagas ya que la variable [b]libre[/b]

[CODE]libre = Workbooks(librok).Sheets(hojita).Range("A7").End(xlDown).Row + 1[/CODE]

tiene el número de la primera línea vacia, y estas insertando una fila en la fila que la ya está vacia, entonces no tiene mucho sentido, suerte

publicado

Estimado bigpetroman, lo que pasa es que pasa los datos de mi formulario al kardex de caja cliente, los cuales estan en cuentasporcobrarTT, y cada hoja esta enmarcada es por eso que primero necesito insertar una fila y despues pasar los datos del formulario.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub   TABLA ELIMINAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.