Visual Basic - error 9 macro

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 31
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alexander (11 intervenciones) el 28/10/2019 22:12:21
buen dia

estoy tratando de crear un código el cual me genera error 9 sub indice fuera de intervalo, ya valide el nombre de las hojas y no puedo lograr que me corra, la ide de la macro es que extraiga información de una hoja y la pegue en otra con unas condiciones, relaciono código espero me puedan ayudar
de antemano muchas gracias
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Sub extra()
 
Dim ultimafiladata
Dim ultimafilaextra
 
Dim trabajo As Integer
Dim vehiculos As Integer
Dim orden As Long
Dim fechaorden As Date
Dim valorunico As Long
Dim cantidad As Integer
Dim totla As Integer
Dim proveedor As Integer
Dim identificacion As Integer
Dim estado As Integer
Dim Medicion As Long
Dim hace As Long
Dim Factura As Integer
Dim fechafact As Date
Dim observa As Integer
 
ultimafiladata = Sheets("data").Range("a" & Rows.Count).End(xlUp).Row
 
For cont = 2 To ultimafiladata
 
trabajo = Sheets("data").Cells(cont, 1)
vehiculo = Sheets("data").Cells(cont, 2)
orden = Sheets("data").Cells(cont, 3)
fechaorden = Sheets("data").Cells(cont, 4)
valoruni = Sheets("data").Cells(cont, 5)
cantidad = Sheets("data").Cells(cont, 6)
total = Sheets("data").Cells(cont, 7)
proveedor = Sheets("data").Cells(cont, 8)
identificacion = Sheets("data").Cells(cont, 9)
estado = Sheets("data").Cells(cont, 10)
Medicion = Sheets("data").Cells(cont, 11)
hace = Sheets("data").Cells(cont, 12)
Factura = Sheets("data").Cells(cont, 13)
fechafact = Sheets("data").Cells(cont, 14)
observa = Sheets("data").Cells(cont, 15)
 
ultimafilaextra = Sheets("extra").Range("a" & Rows.Count).End(xlUp).Row
 
Sheets("extra").Cells("ultimafilaextra" + 1, 1) = trabajo
Sheets("extra").Cells("ultimafilaextra" + 1, 2) = vehiculo
Sheets("extra").Cells("ultimafilaextra" + 1, 3) = orden
Sheets("extra").Cells("ultimafilaextra" + 1, 4) = fechaorden
Sheets("extra").Cells("ultimafilaextra" + 1, 5) = valoruni
Sheets("extra").Cells("ultimafilaextra" + 1, 6) = cantidad
Sheets("extra").Cells("ultimafilaextra" + 1, 7) = total
Sheets("extra").Cells("ultimafilaextra" + 1, 8) = proveedor
Sheets("extra").Cells("ultimafilaextra" + 1, 9) = identificacion
Sheets("extra").Cells("ultimafilaextra" + 1, 10) = estado
Sheets("extra").Cells("ultimafilaextra" + 1, 11) = Medicion
Sheets("extra").Cells("ultimafilaextra" + 1, 12) = hace
Sheets("extra").Cells("ultimafilaextra" + 1, 13) = Factura
Sheets("extra").Cells("ultimafilaextra" + 1, 14) = fechafact
Sheets("extra").Cells("ultimafilaextra" + 1, 15) = observa
 
 
If trabajo = "CA005- REPARAR CAJA DE VELOCIDADES" Then
 
ElseIf trabajo = "AD015- D/M RADIADOR" Then
 
ElseIf trabajo = "AA008- REVISAR  TURBO" Then
 
ultimafilaextra = Sheets("ultfilaextra").Range("a" & Rows.Count).End(xlUp).Row
 
 
End If
 
Next cont
 
MsgBox "trasferencia realizada exitosamente", vbInformation, "extraccion"
 
 
 
 
End Sub
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
Imágen de perfil de Alfredo
Val: 21
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alfredo (8 intervenciones) el 28/10/2019 22:29:33
Hola Alexander

A reserva de que subas tu libro con algunos datos (puede ser con datos ficticios) para valorar, observo un error en las lineas:

1
2
Sheets("extra").Cells("ultimafilaextra" + 1, 1) = trabajo  'los indices en la instrucción cells son numéricos
Sheets("extra").Cells("ultimafilaextra" + 1, 2) Etc...

La variable ultimafilaextra es numérica y la estas escribiendo encerrada entre comillas, como si fuera texto, puede ser ese tu error
Prueba y nos comentas

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: 31
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alexander (11 intervenciones) el 28/10/2019 23:17:49
Buen Dia
adjunto el archivo, realice la modificación de las comillas pero me sigue generando el mismo error y señala la linea

ultimafiladata = Sheets("data").Range("a" & Rows.Count).End(xlUp).Row

quedo atento a su amable colaboracion
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 Alfredo
Val: 21
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alfredo (8 intervenciones) el 29/10/2019 00:43:46
Hola Alexander

He revisado tu archivo y te numero algunas correcciones que necesitas hacer:

1). En el nombre de la hoja 1 existe un espacio al final del nombre ( "Data " ) elimina el espacio final en el nombre
2). En el código te refieres a la hoja con el nombre "data" en minúsculas, debe ser "Data"
3). En las hojas Data y Extra hay celdas que se refieren a fechas con un formato personalizado y para su lectura usas una variable tipo Date, la cual solo acepta fecha, no horas, cambia las celdas al formato "Fecha corta" o asigna el tipo "Variant" a las variables que leen estos campos.
4). Las variables "trabajo, proveedor, estado y observa" las asignaste como "Integer" y las usas para leer cadenas, cambia su tipo por "String"
5). La variable "identificación" es de tipo "Integer" y lee números muy grandes, cámbiala a "Long"
6). La variable "Factura" es "Integer", pero en las celdas correspondientes tienes números almacenados como texto, define que tipo vas a usar en las celdas y dependiendo usa tipos integer o string.

Realizando esos cambio corre bien la macro

Salu2
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: 31
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alexander (11 intervenciones) el 29/10/2019 15:21:30
Buen dia
la macro me corrió,muchas gracias, pero no me tomo la condición, ya que yo quiero que me pasa solo información relacionada en la condición, no toda la base de datos,y cada ves que me generan nuevas condición poderlas incluir, ya que me esta copiando y pegando la información tal como esta.
gracias quedo atento a tu valiosa ayuda

1
2
3
4
5
6
7
If trabajo = "CA005- REPARAR CAJA DE VELOCIDADES" Then
 
ElseIf trabajo = "AD015- D/M RADIADOR" Then
 
ElseIf trabajo = "AA008- REVISAR  TURBO" Then
 
End If
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 Alfredo
Val: 21
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alfredo (8 intervenciones) el 29/10/2019 16:59:20
Buenas Alexander

Tu código original esta hecho para copiar toda la hoja Data en la hoja Extra y hasta el final hay una condición, lo anterior respete pensando era lo que necesitabas

Te pido de favor, ¿si se cumple la condición? , ¿que datos deseas copiar?, ¿Que filas y que columnas?, si existe datos en la hoja Extra, los debo respetar, o los elimino, los datos copiados, ¿los dejo intactos en la hoja Data? ayúdame con mas orientación.

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
sin imagen de perfil
Val: 31
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alexander (11 intervenciones) el 29/10/2019 18:22:23
Buena Tarde

la idea es que la macro copie todas los datos como esta ahora pero solo debe extraer los que yo necesito de la columna A"Trabajo"

ejemplo columna A= TRABAJO

CA005- REPARAR CAJA DE VELOCIDADES,que me pase todas las actividad referente a la CA005,con todos los datos
CE007- CAMBIAR EMBRAGUE,que me pase todos los datos
CE004- CAMBIAR BOMBA PRINCIPAL EMBRAGUE, toda la información.

que en la hoja extra quede la información de todas las columnas pero de las referencias que relacione anteriormente, y cuando me salgan nuevas referencias las pueda incluir y desechar la demás información que no es relevante para mi informe, una ves corra la macro que la hoja data, se borren los registros para cuando baje nueva información.
gracias de antemano por tu valiosa ayuda.
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 Alfredo
Val: 21
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alfredo (8 intervenciones) el 29/10/2019 23:45:54
Buenas tardes Alexander

Te adjunto el archivo modificado con lo siguiente:

1). Adicione una hoja llamada BD, en la cual puedas configurar las claves que usas y las cuales serán usadas para buscar y extraer futuros datos que desees.

2). Use un Userform para solicitar al usuario elija de una lista desplegable la clave que desea buscar y extraer

3). Puse un validación en el código para que no copie datos que ya se encuentren el la Hoja Extra, use para evitar duplicidades la columna "Orden"

Espero sea lo que necesitas, comenta tu opinión

Saludos desde México
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 31
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alexander (11 intervenciones) el 30/10/2019 16:05:01
buen día
muchas,gracias es excelente, me podrías colaborar si es posible que en el formulario me de la opción de buscar también por la columna vehículo, seria útil validar código y el vehículo, pero en el momento que solo quiera código me quede tal como esta y solo cuando yo necesite pueda combinar la búsqueda vehículo código.
muchas gracias por tu valioso tiempo.
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 Alfredo
Val: 21
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alfredo (8 intervenciones) el 30/10/2019 20:28:25
Buenas tardes alex

Haber si esto es lo que necesitas

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 31
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alexander (11 intervenciones) el 30/10/2019 20:54:46
buena tarde, muchas gracias excelente trabajo me optimizo mucho tiempo
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: 31
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 9 macro

Publicado por Alexander (11 intervenciones) el 31/10/2019 00:05:28
Buen Dia
disculpa, la macro esta muy buena pero sigo teniendo mucho perdida de tiempo ya que debo obtener los rendimientos en días y en medición, como podría automatizar este proceso.

ejemplo poder en una tercera hoja colocar la información de tal manera:

Vehículo Trabajo Cantidad $ Fecha Instalación Fecha de retiro # Días Medición inicial medición final


adjunto nuevamente el archivo con una tercera hoja que tengo que llevar pero esto es muy manuela y me demoro mucho, ya que debo filtrar los trabajos y son bastantes luego organizar de la a la z, por fecha, después debo buscar los vehiculos que hayan tenido cambios del mismo trabajo, y obtener la cantidad de días desde el ultimo trabajo, al igual que el rendimiento de las mediciones o kilómetros, copiar y pegar en una tercera hoja llamada base de datos con rendimientos, igual como puedes ver los trabajos aumentaron, y es muy demorado el filtro por trabajo
se podria modificar el filtro ya que pasar uno por uno es demorado podría ser que de esta información de una ves me pasa los datos que estén con rendimiento.


muchas 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