Excel - Corrección de Macro Excel

 
Vista:
Imágen de perfil de Gerardo
Val: 23
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Corrección de Macro Excel

Publicado por Gerardo (10 intervenciones) el 22/10/2019 19:03:42
Saludos!
Solicito ayuda para corrección de una Macro.
Ahora mismo sólo pone "1", según corresponde en la categoría/fecha del "Calendario".
Necesito que la Macro en lugar de "1", ponga el [Code] "SS,SO,RO", según corresponda para cada acción.

Adjunto archivo excel con todo lo necesario.

Muchas gracias de antemano!
GV
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: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Corrección de Macro Excel

Publicado por Antoni Masana (2477 intervenciones) el 22/10/2019 22:26:06
La macro tenia un fallo y por eso no funcionaba.

Ahora esta probada.

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
Sub ActualizarAcciones()
    Dim Acciones As Long, Fila As Long, Columna As Long, _
        F As Long, C As Long, CATEGORIA As String, _
        FECHA_DESDE As Date, NOCHES As String, i As Long
 
    Application.ScreenUpdating = False
 
    ' ---&--- Limpia la Tabla
 
    Sheets("Calendario").Select
 
    Range("C3").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.ClearContents
    Range("C3").Select
 
    ' ---&--- Proceso
 
    Sheets("Bitacora").Select
    Acciones = WorksheetFunction.CountA(Range("A:A"))
 
    For i = 2 To Acciones Step 1
 
        Sheets("Bitacora").Select
 
        CATEGORIA = Range("B" & i).Value
        FECHA_DESDE = Range("D" & i).Value
        NOCHES = Range("C" & i).Value
 
        Sheets("Calendario").Select
 
        ' ---&--- Busca la Columna
 
        Columna = 0
        C = 3
        While Cells(1, C) <> "" And Columna = 0
            If Cells(1, C) = FECHA_DESDE Then Columna = C
            C = C + 1
        Wend
 
        ' ---&--- Busca la fila
 
        Fila = 0
        F = 4
        While Cells(F, "A") <> "" And Fila = 0
            If Cells(F, "A") = CATEGORIA Or Cells(F, "B") = CATEGORIA Then Fila = F
            F = F + 1
        Wend
 
        ' ---&--- Si tengo Fila y Columna Guardoo
 
        If Fila > 0 And Columna > 0 Then
           Cells(Fila, Columna) = NOCHES
        Else
           MsgBox "No puedo localizar:" & _
                  vbCrLf & _
                  vbCrLf & _
                  "CATEGORIA: " & CATEGORIA & _
                  vbCrLf & _
                  vbCrLf & _
                  "Fecha: " & FECHA_DESDE, vbCritical + vbOKOnly, "ERROR LOCALIZAR"
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Acciones Procesadas"
   ActiveWorkbook.Save
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
Imágen de perfil de Gerardo
Val: 23
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Corrección de Macro Excel

Publicado por Gerardo (10 intervenciones) el 23/10/2019 23:17:03
Antoni, nuevamente te agradezco. Ésta última macro fue la que me funcionó!
El único inconveniente presentado, fue que sólo aplica la acción para una sola fecha, y no para todo el periodo.
Podrías añadirle la función para que aplique para todas las fechas que comprenda el periodo por favor?
Entiendo sería agregarle la funcion Split(ActiveCell.Adress por el periodo de fechas.

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

Corrección de Macro Excel

Publicado por Antoni Masana (2477 intervenciones) el 31/10/2019 18:15:18
Hecho.

Veras que el fichero es mucho más pequeño. Eso se debe a que he borrado todas las columnas desde la 7 a la 16384 y las filas desde la 85 hasta la 1048576 que excel es ha empeñado en decidir que tenias datos y eso hacia que sin necesidad el fichero fuese más grande con lo que tarda más en cargarlo y en guardarlo.


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
80
Option Explicit
 
Sub ActualizarAcciones()
    Dim Acciones As Long, Fila As Long, CODE As String, i As Long, _
        F As Long, C As Long, CATEGORIA As String
 
    Dim Columna_Desde As Long, FECHA_DESDE As Date, _
        Columna_Hasta As Long, FECHA_HASTA As Date, Columna As Long
 
    Application.ScreenUpdating = False
 
    ' ---&--- Limpia la Tabla
 
    Sheets("Calendario").Select
 
    Range("C3").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.ClearContents
    Range("C3").Select
 
    ' ---&--- Proceso
 
    Sheets("Bitacora").Select
    Acciones = WorksheetFunction.CountA(Range("A:A"))
 
    For i = 2 To Acciones Step 1
 
        Sheets("Bitacora").Select
 
        CATEGORIA = Range("B" & i).Value
        FECHA_DESDE = Range("D" & i).Value
        FECHA_HASTA = Range("E" & i).Value
        CODE = Range("C" & i).Value
 
        Sheets("Calendario").Select
 
        ' ---&--- Busca la Columna
 
        Columna_Desde = 0
        Columna_Hasta = 0
        C = 3
        While Cells(1, C) <> "" And (Columna_Desde = 0 Or Columna_Hasta = 0)
            If Cells(1, C) = FECHA_DESDE Then Columna_Desde = C
            If Cells(1, C) = FECHA_HASTA Then Columna_Hasta = C
            C = C + 1
        Wend
 
        ' ---&--- Busca la fila
 
        Fila = 0
        F = 3
        While Cells(F, "A") <> "" And Fila = 0
            If Cells(F, "A") = CATEGORIA Or Cells(F, "B") = CATEGORIA Then Fila = F
            F = F + 1
        Wend
 
        ' ---&--- Si tengo Fila y Columna Guardoo
 
        If Fila > 0 And Columna_Desde > 0 And Columna_Hasta Then
            For Columna = Columna_Desde To Columna_Hasta
               Cells(Fila, Columna) = CODE
            Next
        Else
            MsgBox "No puedo localizar:" & _
                     vbCrLf & _
                     vbCrLf & _
                   "CATEGORIA: " & CATEGORIA & _
                     vbCrLf & _
                     vbCrLf & _
                   "Fecha Desde: " & FECHA_DESDE & _
                     vbCrLf & _
                     vbCrLf & _
                   "Fecha Hasta: " & FECHA_HASTA, _
                   vbCritical + vbOKOnly, "ERROR LOCALIZAR"
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Acciones Procesadas"
'   ActiveWorkbook.Save
End Sub

Para las pruebas he comentado la opción de salvar.

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

Corrección de Macro Excel

Publicado por Gerardo (10 intervenciones) el 08/11/2019 17:50:37
Nuevamente te agradezco tu tiempo y paciencia Antoni, la macro me ha funcionado de maravilla y sin errores!
Un Saludo,
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