Excel - Error con macors

 
Vista:
Imágen de perfil de Ricardo
Val: 4
Ha disminuido su posición en 10 puestos en Excel (en relación al último mes)
Gráfica de Excel

Error con macors

Publicado por Ricardo (3 intervenciones) el 06/08/2019 17:25:52
Tengo esta macro de un proyecto pasado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub valorb2()
 
Dim ws As Worksheet
Dim i As Long
 
i = 2
 
For Each ws In ActiveWorkbook.Worksheets
If ws.Index = 1 Then GoTo F
Range("A" & i).Value = ws.Range("E5").Value
Range("B" & i).Value = ws.Range("E12").Value
Range("C" & i).Value = i - 1
i = i + 1
F:
Next
 
End Sub

Lo que hacia en este otro proyecto era leer los datos de distintas celdas de varias horas y listarlos en una hoja tipo indice.

En mi nuevo proyecto trate de acoplarla, pero tomaba datos de hojas que no deseo listar, y por lo tanto metia datos en blanco desplazando los que si debian estar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub actualizarvalor()
 
Dim ws As Worksheet
Dim i As Long
 
i = 2
 
For Each ws In ActiveWorkbook.Worksheets
If ws.Index = 1 Then GoTo F
Range("D" & i).Value = ws.Range("H4").Value
Range("E" & i).Value = ws.Range("H8").Value
Range("F" & i).Value = ws.Range("H47").Value
Range("G" & i).Value = ws.Range("H54").Value
i = i + 1
F:
Next
 
End Sub


Las hojas que deseo que no lea son respectivamente la 1, 2, 3 y no se si tampoco deba leer la 4 que es donde esta el indice donde se listan los datos de las demas hojas, a parte de estas cuatro hojas hay 10, de cuales se supone la macros debe leer los datos. espero puedan ayudarme a corregirla

Anexo el archivo del proyecto pasado por si necesitan un ejemplo de que debe de hacer exactamente la macros
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 Antoni Masana
Val: 3.860
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Error con macors

Publicado por Antoni Masana (1293 intervenciones) el 06/08/2019 21:22:15
El Goto es una instrucción que solo es necesaria usarlo con el On Error en los demás se puede hacer de mil formas diferentes sin necesidad de él.

Tratar las hojas por el indice en casos como estos tiene el peligro que si se cambia de lugar una hoja ya no funciona.
He creado una macro que se llama prueba y te muestra el indice de la hoja y el nombre.
Hay un segundo libro con la misma macro pero he movido la hoja1 a la derecha.
Si ejecutas las dos macros con sus respectivos libros veras la diferencia.

Teniendo en cuanta lo expuesto te pongo la macro que ignora 4 hojas, puedes adaptarla para que las que no tiene que leer.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub valorb2()
    Dim ws As Worksheet, i As Long
    i = 2
    With Sheets("Hoja1")
        For Each ws In ActiveWorkbook.Worksheets
            If UCase(ws.Name) <> "HOJA1" And UCase(ws.Name) <> "CHICO 1" And _
                                             UCase(ws.Name) <> "CHICO 2" And _
                                             UCase(ws.Name) <> "CHICO 3" Then
                .Range("A" & i).Value = ws.Range("E5").Value
                .Range("B" & i).Value = ws.Range("E12").Value
                .Range("C" & i).Value = i - 1
                i = i + 1
            End If
        Next
    End With
End Sub

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
Imágen de perfil de Hector Madriz
Val: 857
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Error con macors

Publicado por Hector Madriz (137 intervenciones) el 07/08/2019 00:36:37
Buen dia, prueba esto:

1
2
3
4
5
6
7
8
9
10
Sub valorb2()
    Hojas = Array(2, 4, 5) ' Indices de las hojas preferidas
    Fila = 2
    For Each Hoja In Hojas
        Range("A" & Fila).Value = Worksheets(Hoja).Range("E5").Value
        Range("B" & Fila).Value = Worksheets(Hoja).Range("E12").Value
        Range("C" & Fila).Value = Hoja
        Fila = Fila + 1
    Next
End Sub

"Los indices de las hojas del libro deben ser inmutables"

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Hector Madriz
Val: 857
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Error con macors

Publicado por Hector Madriz (137 intervenciones) el 07/08/2019 05:40:43
Si quieres seleccionar por nombre:

1
2
3
4
5
6
7
8
9
10
Sub valorb2()
    Hojas = Array("Chico 1", "Chico 4", "Chico 5") ' Nombres de las hojas de preferidas (0..n)
    Fila = 2
    For Each Hoja In Hojas
        Range("A" & Fila).Value = Sheets(Hoja).Range("E5").Value
        Range("B" & Fila).Value = Sheets(Hoja).Range("E12").Value
        Range("C" & Fila).Value = Sheets(Hoja).Index
        Fila = Fila + 1
    Next
End Sub

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar