Excel - cómo ver el código de la hoja ejecutarse línea a línea?

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

cómo ver el código de la hoja ejecutarse línea a línea?

Publicado por celia (437 intervenciones) el 07/09/2021 11:30:25
Hola

Con F8 se pueden ver los pasos que siguen las macros 1 a 1, pero para verlo igual aplicado al código que esté escrito en la hoja no funciona.
Hay alguna forma de verlo igual?

Gracias, saludos.
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

cómo ver el código de la hoja ejecutarse línea a línea?

Publicado por Antoni Masana (2485 intervenciones) el 07/09/2021 15:36:39
Supongo que te refieres a los eventos como:

1
2
3
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
o
Private Sub Worksheet_Change(ByVal Target As Range)

Por poner alguno.

Hay varias formas de hacerlo.

A.- Te pones en la primera línea, donde esta el Sub, y pulsas F9, esto pone una marca en la línea y hace que se pare y puedes seguir con F8.
B.- Poner un STOP como primer comando y se para al llegar a él y puedes seguir con F8.

Seguramente hay alguna más pero si la hay no la conozco.

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 celia
Val: 761
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo ver el código de la hoja ejecutarse línea a línea?

Publicado por celia (437 intervenciones) el 07/09/2021 16:34:18
Excel hace cosas extraña. La 1ª forma que probé funcionó el F9 y el F8 y luego ya no hay manera.
El lo escrito y tampoco avanza.

He copiado el código a un libro vacío por si había algo raro en la hoja y tampoco me deja revisarlo.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = True
Dim Lin As Integer, col As Integer
Dim Fila_Destin As Long, f As Long, Texto As String, _
Colu_Destin As Long, c As Long
col = Target.Column: Application.EnableEvents = False
Fil = Target.Row

If Target.Cells.Count > 1 Then Exit Sub
If col = 4 And Fil = 7 Then
Fila_Destin = 57
Colu_Destin = 37: Texto = Cells(7, "D")
If Range("d7").Value <> Range("AK57").Value Then
For Fil = 42 To 42 Step 15
For col = 37 To 384 Step 13
If Texto = Cells(Fil, col) Then
Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
Selection.Copy
Range("ak57").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Application.EnableEvents = True
GoTo SalNOMBRE1
End If
Next
Next
End If
End If

SalNOMBRE1:

If Range("e7").Value <> Range("AY57").Value Then
If col = 5 And Fil = 7 Then
Fila_Destin = 57
Colu_Destin = 51: Texto = Cells(7, "E")
For Fil = 42 To 42 Step 15
For col = 37 To 384 Step 13
If Texto = Cells(Fil, col) Then
Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
Selection.Copy
Range("AY57").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Application.EnableEvents = True
GoTo SalNOMBRE2
End If

Next
Next
End If
End If

SalNOMBRE2:

If Range("D8").Value <> Range("AK71").Value Then
If col = 4 And Fil = 8 Then
Fila_Destin = 71
Colu_Destin = 37: Texto = Cells(8, "D")

For Fil = 42 To 42 Step 15
For col = 37 To 384 Step 13
If Texto = Cells(Fil, col) Then
Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
Selection.Copy
Range("AK71").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Application.EnableEvents = True
GoTo SalNOMBRE3
End If
Next
Next
End If
End If

SalNOMBRE3:

If Range("E8").Value <> Range("AY71").Value Then
If col = 5 And Fil = 8 Then
Fila_Destin = 71
Colu_Destin = 51: Texto = Cells(8, "E")
For Fil = 42 To 42 Step 15
For col = 37 To 384 Step 13
If Texto = Cells(Fil, col) Then
Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
Selection.Copy
Range("AY71").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Application.EnableEvents = True
Exit Sub
End If
Next
Next
End If

Application.EnableEvents = True
End If
Exit Sub

End Sub
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

cómo ver el código de la hoja ejecutarse línea a línea?

Publicado por Antoni Masana (2485 intervenciones) el 07/09/2021 18:10:31
No se que problemas tienes con la macro pero veo unos cuantos o mejor dicho unas cuantas cosas que no me gustan.

Te corrijo la macro

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    'Application.EnableEvents = True
    Application.EnableEvents = False
 
    Dim Lin As Integer, col As Integer
    Dim Fila_Destin As Long, f As Long, Texto As String, _
        Colu_Destin As Long, c As Long
 
    ' --- Aqui asignas unos valores que mas adelate pierdes
 
    col = Target.Column ': Application.EnableEvents = False
    Fil = Target.Row
 
    If Target.Cells.Count > 1 Then Exit Sub
 
    If col = 4 And Fil = 7 Then
        Fila_Destin = 57
        Colu_Destin = 37: Texto = Cells(7, "D")
        If Range("d7").Value <> Range("AK57").Value Then
            For Fil = 42 To 42 Step 15
                For col = 37 To 384 Step 13
                    If Texto = Cells(Fil, col) Then
                        Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
                        Selection.Copy
                        Range("ak57").Select
                        ActiveSheet.Paste
                        Application.CutCopyMode = False
                        Application.EnableEvents = True
                        'GoTo SalNOMBRE1
                        Fil = 42
                        Col = 384   ' --- Fuerzo el Exit For en los dos
                    End If
                Next
            Next
        End If
    End If
 
'SalNOMBRE1:
 
    If Range("e7").Value <> Range("AY57").Value Then
 
       ' WARNING --- Las variables Col y Fil si se ejecuto el FOR anterior ya no
       '             tienen los valores capturados anteriormente
 
       ' --- Aqui asignas nuevos valores
 
       col = Target.Column
       Fil = Target.Row
 
       If col = 5 And Fil = 7 Then
           Fila_Destin = 57
           Colu_Destin = 51: Texto = Cells(7, "E")
           For Fil = 42 To 42 Step 15
               For col = 37 To 384 Step 13
                   If Texto = Cells(Fil, col) Then
                       Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
                       Selection.Copy
                       Range("AY57").Select
                       ActiveSheet.Paste
                       Application.CutCopyMode = False
                       Application.EnableEvents = True
                       'GoTo SalNOMBRE2
                        Fil = 42
                        Col = 384   ' --- Fuerzo el Exit For en los dos
                    End If
               Next
           Next
       End If
   End If
 
'SalNOMBRE2:
 
    If Range("D8").Value <> Range("AK71").Value Then
 
       ' WARNING --- Las variables Col y Fil si se ejecuto el FOR anterior ya no
       '             tienen los valores capturados anteriormente
 
       ' --- Aqui asignas nuevos valores
 
       col = Target.Column
       Fil = Target.Row
 
        If col = 4 And Fil = 8 Then
 
            Fila_Destin = 71
            Colu_Destin = 37: Texto = Cells(8, "D")
 
            For Fil = 42 To 42 Step 15
                For col = 37 To 384 Step 13
                    If Texto = Cells(Fil, col) Then
                        Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
                        Selection.Copy
                        Range("AK71").Select
                        ActiveSheet.Paste
                        Application.CutCopyMode = False
                        Application.EnableEvents = True
                       'GoTo SalNOMBR3
                        Fil = 42
                        Col = 384   ' --- Fuerzo el Exit For en los dos
                     End If
                Next
            Next
        End If
    End If
 
'SalNOMBRE3:
 
    If Range("E8").Value <> Range("AY71").Value Then
 
       ' WARNING --- Las variables Col y Fil si se ejecuto el FOR anterior ya no
       '             tienen los valores capturados anteriormente
 
       ' --- Aqui asignas nuevos valores
 
       col = Target.Column
       Fil = Target.Row
 
        If col = 5 And Fil = 8 Then
            Fila_Destin = 71
            Colu_Destin = 51: Texto = Cells(8, "E")
            For Fil = 42 To 42 Step 15
                For col = 37 To 384 Step 13
                    If Texto = Cells(Fil, col) Then
                        Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
                        Selection.Copy
                        Range("AY71").Select
                        ActiveSheet.Paste
                        'Application.CutCopyMode = False
                        'Application.EnableEvents = True
                        Exit Sub
                    End If
                Next
            Next
        End If
 
        'Application.EnableEvents = True
    End If
 
'    Exit Sub
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub




Aquí el código limpio a falta de comentarios que siempre van bien aunque no afecta a su funcionamiento.

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Lin As Integer, col As Integer
    Dim Fila_Destin As Long, f As Long, Texto As String, _
        Colu_Destin As Long, c As Long
 
    Application.ScreenUpdating = False
    Application.EnableEvents = False
 
    If Target.Cells.Count > 1 Then Exit Sub
 
    If Target.Column = 4 And Target.Row = 7 Then
        Fila_Destin = 57
        Colu_Destin = 37: Texto = Cells(7, "D")
        If Range("d7").Value <> Range("AK57").Value Then
            For Fil = 42 To 42 Step 15
                For col = 37 To 384 Step 13
                    If Texto = Cells(Fil, col) Then
                        Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
                        Selection.Copy
                        Range("ak57").Select
                        ActiveSheet.Paste
                        Application.CutCopyMode = False
                        Application.EnableEvents = True
                        Fil = 42
                        Col = 384   ' --- Fuerzo el Exit For en los dos
                    End If
                Next
            Next
        End If
    End If
 
    If Range("e7").Value <> Range("AY57").Value Then
        If Target.Column = 5 And Target.Row = 7 Then
            Fila_Destin = 57
            Colu_Destin = 51: Texto = Cells(7, "E")
            For Fil = 42 To 42 Step 15
                For col = 37 To 384 Step 13
                    If Texto = Cells(Fil, col) Then
                        Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
                        Selection.Copy
                        Range("AY57").Select
                        ActiveSheet.Paste
                        Application.CutCopyMode = False
                        Application.EnableEvents = True
                        Fil = 42
                        Col = 384   ' --- Fuerzo el Exit For en los dos
                    End If
                Next
            Next
        End If
    End If
 
    If Range("D8").Value <> Range("AK71").Value Then
        If Target.Column = 4 And Target.Row = 8 Then
            Fila_Destin = 71
            Colu_Destin = 37: Texto = Cells(8, "D")
            For Fil = 42 To 42 Step 15
                For col = 37 To 384 Step 13
                    If Texto = Cells(Fil, col) Then
                        Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
                        Selection.Copy
                        Range("AK71").Select
                        ActiveSheet.Paste
                        Application.CutCopyMode = False
                        Application.EnableEvents = True
                        Fil = 42
                        Col = 384   ' --- Fuerzo el Exit For en los dos
                     End If
                Next
            Next
        End If
    End If
 
    If Range("E8").Value <> Range("AY71").Value Then
        If Target.Column = 5 And Target.Row = 8 Then
            Fila_Destin = 71
            Colu_Destin = 51: Texto = Cells(8, "E")
            For Fil = 42 To 42 Step 15
                For col = 37 To 384 Step 13
                    If Texto = Cells(Fil, col) Then
                        Range(Cells(Fil, col), Cells((Fil + 13), (col + 12))).Select
                        Selection.Copy
                        Range("AY71").Select
                        ActiveSheet.Paste
                        Fil = 42
                        Col = 384   ' --- Fuerzo el Exit For en los dos
                    End If
                Next
            Next
        End If
    End If
 
    Application.ScreenUpdating = True
    Application.EnableEvents = True
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
1
Comentar
Imágen de perfil de celia
Val: 761
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

cómo ver el código de la hoja ejecutarse línea a línea?

Publicado por celia (437 intervenciones) el 07/09/2021 18:36:09
VA FENOMENAL AHORA !!!!

Otro millón de gracias 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