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
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    3    1

  • Crear macros Excel

  • Mensajes

    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para generar un código alfanumérico continuo que al guardar los datos se copia en la Celdas “B5” de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Private Sub CommandButton3_Click()     If Hoja58.Range("B5").Value < 9999 Then Hoja58.Range("B5").Value Hoja58.Range("B6").Value + 1     Else        Hoja58.Range("B5").Value = 1     End If If Hoja59.Range("B5").Value < 9999 Then Hoja59.Range("B5").Value = Hoja59.Range("B6").Value + 1 Else        Hoja59.Range("B5").Value = 1     End If End Sub El código se genera normalmente sin embargo no se copia inmediatamente en las Celdas “B5” sino que aparece en las Celdas “B6” mientras que las Celdas “B5” siempre permanecen en blanco, actualmente el código consta de tres letras y cuatro dígitos (RCI-0000) pero me interesa poderle concatenar el mes y año en formato mm-yy para que el código finalmente quede expresado de la siguiente forma RCI-0000-00-00 Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad  los datos provenientes de los TextBox 5, 6 y 7 se guardan en las Columnas H, I y O de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) sin embargo cuando el texto es abundante no se visualiza completamente en las celdas correspondientes de allí que necesito que cada fila se ajuste al tamaño de la celda que contenga mayor cantidad de texto para lo cual he probado con la siguiente macro: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.EntireRow.AutoFit End Sub Sin embargo, dicha macro coloca todas las filas del tamaño del texto que contengan y lo que en realidad necesito es que dicha macro solo se aplique desde la Fila 5 en adelante. Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para que la fecha aparezca en el Textbox2: Private Sub UserForm_activate() Me.TextBox2.Value = VBA.Date End Sub Sin embargo, una vez guardo los datos la fecha cambia de formato y se guarda en formato mm/dd/yyyy en vez de dd/mm/yyyy y este cambio de fecha me distorsiona los resultados de las fórmulas en las Columnas J en las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • ¡Hola! Después de un buen tiempo ausente...  @Gabriela hg ya que veo que tienes Excel 365, te dejo mi solución para piezas y gramos.   Extraer piezas - gramos 365_GP.xlsx
  • 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.