Visual Basic para Aplicaciones - error 424

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

error 424

Publicado por Albert (204 intervenciones) el 18/12/2019 13:52:14
Buenos días, tengo un código para buscar si ya existe una factura en una lista para no duplicarla y me sale el error 424 "se requiere un objeto" lo he probado de varias maneras y siempre me sale el mismo error, os adjunto la parte del código donde falla.
este es un modo
estan en el modulo "volver"
Set factura = Hoja2.Range("B:B").Find(d1.Value, LookIn:=xlValues, LookAt:=xlWhole)
este es otro modo
Set busca = Relación.Range("b5:b" & Fi).Find(d1)
lo que quería que hiciese es buscar en la columna "b" de la hoja relación y si no la encuentra que la añada y si la encuentra que la reescriba en el misma fila donde esta.
por si es mas practico os adjunto el archivo...para entrar le tenéis que poner "ana" pasword "1"
que por cierto también me da error 1004
Gracias de antemano por vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

error 424

Publicado por Albert (204 intervenciones) el 18/12/2019 17:22:36
Disculpad, veréis que hay un modulo que se llama "crearIndice" mi intención era que se crease un hipervinculo a cada hoja que sea factura para poder apagar las pestañas de hoja,
If hoja.Name <> "Relación" & "Entrada" & "Datos" & "0" Then " este es el código para que no salgan las que no deben, en otra aplicación que tengo funciona perfectamente pero en esta me salen todas asi que lo tengo apagada
Gracias a todos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

error 424

Publicado por Antoni Masana (498 intervenciones) el 23/12/2019 17:05:24
Te voy a comentar varios errores que veo en la macro de VOLVER ( Sub Ocultarhojasmenoslaactiva() )

* Este codigo esta MAL. ¿Cual es la hoja activa? ¿Cualquiera? Porque se puede ejecutar en cualquier momento, desde cualquier hoja. Debes indicar la hoja especifica o activarla

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Ocultarhojasmenoslaactiva()
    Dim limite As Object
    Application.ScreenUpdating = False
 
    Dim y As Integer
    ...
    d = ActiveSheet.Range("f15").Value 'fecha
    d1 = ActiveSheet.Range("d15").Value 'factura
    d2 = ActiveSheet.Range("d19").Value
    d3 = ActiveSheet.Range("c26").Value
    d4 = ActiveSheet.Range("d18").Value
    d5 = ActiveSheet.Range("j44").Value
    d6 = ActiveSheet.Range("j45").Value
    d7 = ActiveSheet.Range("j48").Value

* Esta línea de código. Hoja2 es una referencia interna, es más correcto usar Sheets("Usuarios"), si tienes que copiar la hoja a otro libro el nombre interno cambiara pero el de la pestaña seguirá siendo en mismo. d1 es una variable no un objeto por lo tanto el .value esta MAL y debe ser lo que de el error.

1
Set factura = Hoja2.Range("B:B").Find(d1.Value, LookIn:=xlValues, LookAt:=xlWhole)

* Añado unas cuantas lineas salteadas. Escribir todas las líneas pegadas a la izquierda hace el código difícil de leer es mejor así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Sub Ocultarhojasmenoslaactiva()
    Dim limite As Object
    Application.ScreenUpdating = False
 
    Dim y As Integer
    ...
    Dim d7 As Variant
'   Dim busca As Object
    Dim factura As Range
 
    '----------------------------------
    ...
    d = ActiveSheet.Range("f15").Value 'fecha
    ...
    d7 = ActiveSheet.Range("j48").Value
    ...
    'aqui Nº Factura
    For x = 5 To 150
        If Hojas2.Cells(x, 2) = "" Then
           Fi2 = x
           Exit For
        End If
    Next
 
    'Dim Dato As Range
    Set factura = Hoja2.Range("B:B").Find(d1, LookIn:=xlValues, LookAt:=xlWhole)
    If Dato Is Nothing Then
        'Set busca = Relación.Range("b5:b" & Fi).Find(d1)
        'If busca Is Nothing Then
 
        Hojas2.Cells(Fi2, 2).Value = d1 'factura
        'aqui fecha
        For y = 5 To 150
           If Hojas2.Cells(y, 1) = "" Then
               Fi = y
               Exit For
           End If
        Next
        Hojas2.Cells(Fi, 1).Value = d
        'aqui Cliente
        For k = 5 To 150

* Yo personalmente en los comentarios añado unas líneas para identificarlo mejor. Si lo pasas a un editor de texto con este truco es más fácil identificar a la primera

1
2
3
4
5
6
7
Sub Ocultarhojasmenoslaactiva()
    Dim limite As Object
    Application.ScreenUpdating = False
    ...
        Hojas2.Cells(Fi, 1).Value = d
        ' --- aqui Cliente
        For k = 5 To 150


De momento nada más.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

error 424

Publicado por Albert (204 intervenciones) el 15/01/2020 16:39:43
Gracias por tu tiempo, cuando puedas entrar veras que la hoja activa lo uso por que se generan las hojas cada vez que lo pides y se autonombran, al cerrar la factura es cuando falla
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar