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

19 envíos / 0 nuevos
Último envío
Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Se ha producido el error '1004' en tiempo de ejecución

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 UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Deshalitar la x del formulario
If CloseMode = 0 Then
MsgBox "Use el botón SALIR del formulario", vbInformation, " Botón No Disponible "
Cancel = 1
CloseMode = 1
End If
End Sub
Private Sub TextBox1_Change()
'Formato de fecha
Select Case Len(TextBox1)
    Case 2:
        If Right(TextBox1, 2) > 31 Then
            MsgBox "Debe de ingresar valor de día entre el 01 al 31", , ""
            TextBox1 = Left(TextBox1, Len(TextBox1) - 2)
        Else
            TextBox1 = TextBox1 & "/"
        End If
    Case 5:
        If Right(TextBox1, 2) > 12 Then
            MsgBox "Debe de ingresar valor de mes entre el 01 al 12", , ""
            TextBox1 = Left(TextBox1, Len(TextBox1) - 2)
        Else
            TextBox1 = TextBox1 & "/"
        End If
End Select
End Sub
Private Sub TextBox1_Enter()
'Cambia fondo
TextBox1.BackColor = vbYellow
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Cambia fondo a normal
TextBox1.Value = Format(TextBox1, "dd/mm/yyyy")
TextBox1.BackColor = vbWhite
End Sub
Private Sub ComboBox1_Enter()
ComboBox1.BackColor = vbYellow
End Sub
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox1.BackColor = vbWhite
End Sub
Private Sub TextBox18_Enter()
TextBox18.BackColor = vbYellow
End Sub
Private Sub TextBox18_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox18.BackColor = vbWhite
End Sub
Private Sub TextBox18_Change()
'Solo permitiremos que se introduzcan números
'para lo cual, si el valor introducido es una letra
'lo omitiremos, y nos quedaremos con el resto de caracteres,
'es decir, con los números
If Not IsNumeric(Right(TextBox18, 1)) And Len(TextBox18) > 1 Then
'controlamos que se permita poner decimales
If Right(TextBox18, 1) = "." Or Right(TextBox18, 1) = "," Then
'controlamos que no haya más de 1 signo de puntuación
If InStr(TextBox18, ".") >= 1 And InStr(TextBox18, ",") >= 1 Then TextBox18 = Left(TextBox18, Len(TextBox18) - 1)
If Len(TextBox18) - Len(Replace(TextBox18, ".", "")) >= 2 Then TextBox18 = Left(TextBox18, Len(TextBox18) - 1)
'If Len(TextBox1) - Len(Replace(TextBox1, ",", "")) >= 2 Then TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
Else
TextBox18 = Left(TextBox18, Len(TextBox18) - 1)
End If
ElseIf Not IsNumeric(Right(TextBox18, 1)) And Len(TextBox18) = 1 Then
TextBox18 = Clear
End If
'controlamos que solo haya dos decimales
If (InStr(TextBox18, ".")) > 0 And Len(Mid(TextBox18, InStr(TextBox18, ".") + 1, Len(TextBox18))) > 2 Then TextBox18 = Left(TextBox18, InStr(TextBox18, ".") + 2)
End Sub
Private Sub ComboBox2_Enter()
ComboBox2.BackColor = vbYellow
End Sub
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox2.BackColor = vbWhite
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 ComboBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox3.BackColor = vbWhite
End Sub

Private Sub ComboBox4_Enter()
ComboBox4.BackColor = vbYellow
End Sub
Private Sub ComboBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox4.BackColor = vbWhite
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 TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2.BackColor = vbWhite
End Sub
Private Sub TextBox3_Enter()
TextBox3.BackColor = vbYellow
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox3.BackColor = vbWhite
End Sub
Private Sub TextBox4_Enter()
TextBox4.BackColor = vbYellow
End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox4.BackColor = vbWhite
End Sub
Private Sub TextBox4_change()
'Solo mayuscula
Dim i As Integer
TextBox4.Text = UCase(TextBox4.Text)
i = Len(TextBox4.Text)
TextBox4.SelStart = i
End Sub
Private Sub TextBox5_Enter()
TextBox5.BackColor = vbYellow
End Sub
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox5.BackColor = vbWhite
End Sub
Private Sub TextBox5_change()
'Solo mayuscula
Dim i As Integer
TextBox5.Text = UCase(TextBox5.Text)
i = Len(TextBox5.Text)
TextBox5.SelStart = i
End Sub
Private Sub TextBox6_Enter()
TextBox6.BackColor = vbYellow
End Sub
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox6.BackColor = vbWhite
End Sub
Private Sub TextBox6_change()
'Solo mayuscula
Dim i As Integer
TextBox6.Text = UCase(TextBox6.Text)
i = Len(TextBox6.Text)
TextBox6.SelStart = i
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 TextBox7_change()
'Solo mayuscula
Dim i As Integer
TextBox7.Text = UCase(TextBox7.Text)
i = Len(TextBox7.Text)
TextBox7.SelStart = i
End Sub
Private Sub TextBox8_Enter()
TextBox8.BackColor = vbYellow
End Sub
Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox8.BackColor = vbWhite
End Sub
Private Sub TextBox8_change()
'Solo mayuscula
Dim i As Integer
TextBox8.Text = UCase(TextBox8.Text)
i = Len(TextBox8.Text)
TextBox8.SelStart = i
End Sub
Private Sub TextBox19_Change()
'Formato de fecha
Select Case Len(TextBox19)
    Case 2:
        If Right(TextBox19, 2) > 31 Then
            MsgBox "Debe de ingresar valor de día entre el 01 al 31", , ""
            TextBox19 = Left(TextBox19, Len(TextBox19) - 2)
        Else
            TextBox19 = TextBox19 & "/"
        End If
    Case 5:
        If Right(TextBox19, 2) > 12 Then
            MsgBox "Debe de ingresar valor de mes entre el 01 al 12", , ""
            TextBox19 = Left(TextBox19, Len(TextBox19) - 2)
        Else
            TextBox19 = TextBox19 & "/"
        End If
End Select
End Sub
Private Sub TextBox19_Enter()
'Cambia fondo
TextBox19.BackColor = vbYellow
End Sub
Private Sub TextBox19_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Cambia fondo a normal
TextBox19.Value = Format(TextBox19, "dd/mm/yyyy")
TextBox19.BackColor = vbWhite
End Sub
Private Sub TextBox9_Enter()
TextBox9.BackColor = vbYellow
End Sub
Private Sub TextBox9_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox9.BackColor = vbWhite
End Sub
Private Sub TextBox9_change()
'Solo mayuscula
Dim i As Integer
TextBox9.Text = UCase(TextBox9.Text)
i = Len(TextBox9.Text)
TextBox9.SelStart = i
End Sub
Private Sub TextBox10_Enter()
TextBox10.BackColor = vbYellow
End Sub
Private Sub TextBox10_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Solo número formato contabilidad
TextBox10.Value = Format(Val(TextBox10), "#,##0.00")
TextBox10.BackColor = vbWhite
End Sub
Private Sub TextBox11_Enter()
TextBox11.BackColor = vbYellow
End Sub
Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox11.Value = Format(Val(TextBox11), "#,##0.00")
TextBox11.BackColor = vbWhite
End Sub
Private Sub TextBox12_Enter()
TextBox12.BackColor = vbYellow
sumando = CDbl(TextBox10) + CDbl(TextBox11)
TextBox12 = Format(sumando, "0.00")
'suma = Val(TextBox10.Text) + Val(TextBox11.Text)
'TextBox12.Text = Str(suma)
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 TextBox13_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox13.Value = Format(Val(TextBox13), "#,##0.00")
TextBox13.BackColor = vbWhite
End Sub
Private Sub TextBox14_Enter()
TextBox14.BackColor = vbYellow
End Sub
Private Sub TextBox14_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox14.Value = Format(Val(TextBox14), "#,##0.00")
TextBox14.BackColor = vbWhite
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 TextBox15_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox15.Value = Format(Val(TextBox15), "#,##0.00")
TextBox15.BackColor = vbWhite
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 TextBox16_change()
'Solo mayuscula
Dim i As Integer
TextBox16.Text = UCase(TextBox16.Text)
i = Len(TextBox16.Text)
TextBox16.SelStart = i
End Sub
Private Sub TextBox17_Enter()
TextBox17.BackColor = vbYellow
End Sub
Private Sub TextBox17_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox17.BackColor = vbWhite
End Sub
Private Sub TextBox17_change()
'Solo mayuscula
Dim i As Integer
TextBox17.Text = UCase(TextBox17.Text)
i = Len(TextBox17.Text)
TextBox17.SelStart = i
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
If TextBox1.Text = "" Then
   MsgBox "Ingresaste la fecha de emisión?", vbInformation, "Aviso a " & Application.UserName
Else
If ComboBox1.Text = "" Then
MsgBox "Ingresaste forma de pago?", vbInformation, "Aviso a " & Application.UserName
ComboBox1.SetFocus
  Else
If ComboBox2.Text = "" Then
MsgBox "Ingresaste al cliente?", vbInformation, "Aviso a " & Application.UserName
ComboBox2.SetFocus
Else
If TextBox18.Text = "" Then
MsgBox "Ingresaste el tipo de cambio?", vbInformation, "Aviso a " & Application.UserName
TextBox18.SetFocus
Else
If ComboBox4.Text = "" Then
MsgBox "Ingresaste línea aérea?", vbInformation, "Aviso a " & Application.UserName
ComboBox4.SetFocus
Else
If TextBox3.Text = "" Then
MsgBox "Ingresaste número de boleto?", vbInformation, "Aviso a " & Application.UserName
texBox3.SetFocus
Else
If TextBox19.Text = "" Then
MsgBox "Ingresaste la fecha de salida?", vbInformation, "Aviso a " & Application.UserName
TextBox19.SetFocus
Else
'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
Sheets("BOLETOS").Select
ActiveSheet.Unprotect Password:="jmp"
X = Hoja2.Range("A" & Rows.Count).End(xlUp).Row + 1
Hoja2.Cells(X, 1).Value = CDbl(TextBox20.Text) 'nº
Hoja2.Cells(X, 2).Value = TextBox18.Text 'tc
Hoja2.Cells(X, 3).Value = ComboBox1.Text 'fp
Hoja2.Cells(X, 4).Value = ComboBox3.Text 'cclte
Hoja2.Cells(X, 5).Value = ComboBox2.Text 'Clte
Hoja2.Cells(X, 6).Value = CDate(TextBox1.Text) 'fecha
Hoja2.Cells(X, 7).Value = ComboBox4.Text 'la
Hoja2.Cells(X, 8).Value = TextBox2.Text 'cod
Hoja2.Cells(X, 9).Value = TextBox3.Text 'tkt
Hoja2.Cells(X, 10).Value = TextBox4.Text 'r1
Hoja2.Cells(X, 11).Value = TextBox5.Text 'r2
Hoja2.Cells(X, 12).Value = TextBox6.Text 'r3
Hoja2.Cells(X, 13).Value = TextBox7.Text 'r4
Hoja2.Cells(X, 14).Value = TextBox8.Text 'r5
Hoja2.Cells(X, 15).Value = TextBox9.Text 'pax
Hoja2.Cells(X, 16).Value = CDbl(TextBox12.Text) 'tt BS
Hoja2.Cells(X, 17).Value = CDbl(TextBox15.Text) 'tt $US
Hoja2.Cells(X, 18).Value = CDbl(TextBox10.Text) 'neto BS
Hoja2.Cells(X, 19).Value = CDbl(TextBox13.Text) 'neto $US
Hoja2.Cells(X, 20).Value = CDbl(TextBox11.Text) 'tax BS
Hoja2.Cells(X, 21).Value = CDbl(TextBox14.Text) 'tax $US
Hoja2.Cells(X, 22).Value = ComboBox5.Text 'ep
Hoja2.Cells(X, 23).Value = TextBox16.Text 'sol
Hoja2.Cells(X, 24).Value = TextBox17.Text 'obs
Hoja2.Cells(X, 25).Value = CDate(TextBox19.Text) 'f.viaje
'ordenarboleto
ActiveSheet.Protect Password:="jmp"
'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
'Workbooks(librok).Sheets(hojita).Cells(libre, 13).VALUE =
'Workbooks(librok).Sheets(hojita).Cells(libre, 14).
Workbooks(Librok).Sheets(hojita).Cells(libre - 1, 13).Copy
Workbooks(Librok).Sheets(hojita).Cells(libre, 13).PasteSpecial.xlPasteAll
Application.CutCopyMode = False
Workbooks(Librok).Sheets(hojita).Cells(libre - 1, 14).Copy
Workbooks(Librok).Sheets(hojita).Cells(libre, 143).PasteSpecial.xlPasteAll
Application.CutCopyMode = False
'limpia
ComboBox1 = ""
ComboBox2 = ""
ComboBox3 = ""
ComboBox4 = ""
ComboBox5 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
TextBox12 = ""
TextBox13 = ""
TextBox14 = ""
TextBox15 = ""
TextBox16 = ""
TextBox17 = ""
TextBox19 = ""
ComboBox1.SetFocus 'selecciona donde se quedara
'Exit Sub
'HayErrores:
 '  MsgBox "Revisar FECHA , FORMA DE PAGO y TIPO DE CAMBIO por favor.."
  ' Exit Sub
End If
End If
End If
End If
End If
End If
End If
End If
Application.ScreenUpdating = True
End Sub

Bueno al momento de ejecutar la macro me sale el siguiente error:

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

 

 

 

 

 

 

Etiquetas: 

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Re: Se ha producido el error '1004' en tiempo de ejecución

El error resalta la siguiente línea

Workbooks(Librok).Sheets(hojita).Cells(a7).End(xlDown).Select

Jesus Martinez Plantarosa

Cron
Imagen de Cron
Offline
última acción: Hace 13 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 9585
Re: Se ha producido el error '1004' en tiempo de ejecución

Intenta poner Librok y hojita entre comillas

Workbooks("Librok").Sheets("hojita").Cells(a7).End(xlDown).Select

 

Saludos

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 30 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 8115
Re: Se ha producido el error '1004' en tiempo de ejecución

comprueba eso de Cells(a7)

no te puedes referir a la celda así, utiliza en su lugar Range, y con el A7 entre comillas

Range("a7")

 

Data Tools Suite
datos y tablas con Excel

Cron
Imagen de Cron
Offline
última acción: Hace 13 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 9585
Re: Se ha producido el error '1004' en tiempo de ejecución

Cierto, se me pasó. Alternativamente puedes referirte a la misma celda como

cells(7,1)


Saludos

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Re: Se ha producido el error '1004' en tiempo de ejecución

Negativo amigo Cron y amigo Pacomegia

subo el archivo la contraseña es JMP

Ayuda por favor

AdjuntoTamaño
File cajatt.rar167.58 KB

Jesus Martinez Plantarosa

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Re: Se ha producido el error '1004' en tiempo de ejecución

Este es el archivo a pasar los datos

 

AdjuntoTamaño
File cuentasporcobrartt.rar117.07 KB

Jesus Martinez Plantarosa

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 horas 30 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 8115
Re: Se ha producido el error '1004' en tiempo de ejecución

mirándolo con más detalle (no era fácil con todo el código en el envío), veo que librok y hojita son variables. en este caso no tienen que ir entre comillas

 

Estás intentando seleccionar una celda en una hoja que no es la activa. Para poder seleccionar la celda, necesitas activar o seleccionar primero la hoja.

Prueba a sustituir la línea del error por estas dos:

Workbooks(librok).Sheets(hojita).Select

Workbooks(librok).Sheets(hojita).Range("a7").End(xlDown).Select

 

 

Me has vuelto un poco loco con el Application.Visible=false

¿Por qué ocultas Excel?

 

Data Tools Suite
datos y tablas con Excel

Cron
Imagen de Cron
Offline
última acción: Hace 13 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 9585
Re: Se ha producido el error '1004' en tiempo de ejecución

Mis disculpas por no darme cuenta de que eran variables.

 

En ese caso hay una cosa importante. Cuando trabajas con varias hojas, el código debe estar en un módulo, y no en la propia hoja. Si el código está en la misma hoja y haces referencia a otra, te dará error la mayoría de las veces.

 

Saludos

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Re: Se ha producido el error '1004' en tiempo de ejecución

Estimado pacomegia hice los cambio y me vuelve a salir el mensaje "se ha producido el error '1004' en tiempo de ejecución : Error en el método select  de la clase workshhet"  :(

Y lo resalta la linea

Workbooks(librok).Sheets(hojita).Select

Ayuda por favor

un abrazo

jesus

Jesus Martinez Plantarosa

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Re: Se ha producido el error '1004' en tiempo de ejecución

Estimado Cron gracias por el interes pero de donde a donde pondria al codigo? ayuda por favor

un abrazo

jesús

Jesus Martinez Plantarosa

Cron
Imagen de Cron
Offline
última acción: Hace 13 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 9585
Re: Se ha producido el error '1004' en tiempo de ejecución

La verdad es que he estado buscando entre el código de los dos archivos y no encuentro la línea donde dices que te da el problema. Por favor, ubícanosla.

 

En cuanto a mi comentario anterior, comprueba que el código está dentro de un Módulo, y no de una hoja.

 

En la imagen he seleccionado un módulo. Una hoja sería "Hoja 2 (BOLETOS)".

Seguramente tampoco te dé problemas si está en el código de un formulario, por ejemplo "Contraseña"

 

Saludos

AdjuntoTamaño
Image icon modulo.jpg46.03 KB
Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Re: Se ha producido el error '1004' en tiempo de ejecución

Estimado Cron desde donde pondria mi código en un modulo? desde cuando selecciono la hoja2?

y te comento que hice los cambios que me recomendo pacomegia pero sale el siguiente mensaje "se ha producido el error '1004' en tiempo de ejecución : Error en el método select  de la clase workshhet"  

Y lo resalta la linea

Workbooks(librok).Sheets(hojita).Select

Ayuda por favor

Si no fuera molestia sera que puedes subir el archivo modificando como tú indicas por favor,

gracias

Jesús

Jesus Martinez Plantarosa

Cron
Imagen de Cron
Offline
última acción: Hace 13 horas 32 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 9585
Re: Se ha producido el error '1004' en tiempo de ejecución

Ahora mismo no puedo subir el archivo editado, pues me voy corriendo a comer ;)

 

Pero yo pondría todo el código en un módulo o en un formulario, o en los dos. El código que colocas en una hoja solo puede aplicarse a esa hoja, y si te sales da un error 1004.

 

Saludos

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Re: Se ha producido el error '1004' en tiempo de ejecución

Buen provecho Cron, y no olvides tomar una cervecita como aperitivo jejejejee.

Te cuento que me estoy perdiendo en esta consulta, dame una mano por favor.

Un abrazo 

Jesús

Jesus Martinez Plantarosa

Creí_que_sabía_Excel
Imagen de Creí_que_sabía_Excel
Offline
última acción: Hace 3 años 7 meses
alta: 11/04/2014 - 18:36
Puntos: 95
Re: Se ha producido el error '1004' en tiempo de ejecución

Comprueba que la variable librok contiene el nombre del archivo (me ha parecido que hay una diferencia entre mayúsculas y minúsculas).
Otra cosa, si continuas ejecutando la macro, al menos a mí, te dará error a la hora de insertar la fila (la instrucción es incorrecta). (Te sobra una parte)
Posteriormente, te va a dar error a la hora de utilizar el Pegado, ya que pones seguido de punto lo que es un argumento (debes ponerlo entre paréntesis).
Más tarde, cuando hagas el registro, y vuelves a cergar el formulario, te da error a la hora de cargar los datos ya que el libro activo es el otro.

Para Cron, el modo de acceder al código es situándote en el formulario de BOLETO (creo recordar), seleccionar un botón y, al pulsar el botón derecho del ratón, indicar "Ir a código".

Creí_que_sabía_Excel
Imagen de Creí_que_sabía_Excel
Offline
última acción: Hace 3 años 7 meses
alta: 11/04/2014 - 18:36
Puntos: 95
Re: Se ha producido el error '1004' en tiempo de ejecución

Por si ha parecido muy críptico mi mensaje anterior.

En la ventana inmediato de Visual Basic, haz que te diga los nombres de los archivos abiertos:

for i=i to workbooks.Count: debug.print i, Workbooks(i).Name: next i (en una sola línea)

Y comparas con el valor librok (debug.print librok)

La instrucción correcta para que te inserte una fila es:

Workbooks(librok).Sheets(hojita).Cells(libre , 1).EntireRow.Insert

Cuando pegas el valor, deberías poner:

Workbooks(librok).Sheets(hojita).Cells(libre, 13).PasteSpecial (xlPasteAll)

(esto te pasa en la siguiente línea también

Y por último, al volver a cargarte el formulario de BOLETO, te da un error, ya que tienes activo el archivo cuentasporcobrar.xlms y no CajaTT.xlms, por lo que deberías confirmar que está activo añadiendo

Workbooks("CajaTT.xlms").Activate

Jesús Martínez ...
Imagen de Jesús Martínez Plantarosa
Offline
última acción: Hace 2 semanas 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 31/03/2013 - 17:15
Puntos: 4938
Re: Se ha producido el error '1004' en tiempo de ejecución

siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii por fin       siiiiiiiiiiiiiiiii gracias gracias gracias  funciona con los consejos que me iluminasteeeeeee

un abrazo enormeeeeee

saludos desde Sucre-Bolivia 

Jesus Martinez Plantarosa

Gustavo Salazar² (no verificado)
Imagen de Gustavo Salazar²
Re: Se ha producido el error '1004' en tiempo de ejecución

Cron, eres lo máximo, muchas gracias, tenía un problema en un archivo y gracias a tu comentario logré resolver el problema.

Una vez más gracias. Mil puntos para tí.