Excel - Cómo juntar en una hoja el código de otra hoja de otro libro distinto y que funcionen los 2 códigos?

 
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 juntar en una hoja el código de otra hoja de otro libro distinto y que funcionen los 2 códigos?

Publicado por celia (437 intervenciones) el 05/04/2019 05:27:09
Hola a todos
Tengo 2 códigos VBA en 2 libros distintos y no sé qué lógica se usa para poder unirlos en una sola hoja y que funcione todo. Me ha pasado más veces que no consigo unirlos y pruebo a pegar uno delante, a pegarlo detrás, a cortar alguna línea repetida, pero no consigo nada.

Tengo el libro1 con su Hoja1 y el libro2 con su Hoja9.

--------------Este es código de la Hoja1:
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
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim F1 As Long, C1 As Long, F2 As Long, C2 As Long
    On Error GoTo Worksheet_SelectionChange_Err
    If Target.Cells.Count = 1 Then 'Solo está seleccionada una celda
        F1 = CeldaAnterior.Row
        C1 = CeldaAnterior.Column
        F2 = Target.Row
        C2 = Target.Column
        If Abs(C1 - C2) + Abs(F1 - F2) > 1 Then 'Si nos movemos más de una celda
            Set CeldaAnterior = Target
        ElseIf C1 - C2 = 1 Then 'Si nos hemos desplazado una columna a la izquierda
                                'hemos pulsado flecha izquierda
            CeldaAnterior.Activate 'Volvemos a la celda
            Range("B5") = Range("B5") - 1   'restamos 1 a la celda B5
        ElseIf C2 - C1 = 1 Then 'Si nos hemos desplazado una columna a la derecha
                                'hemos pulsado flecha derecha
            CeldaAnterior.Activate
            Range("B5") = Range("B5") + 1   'sumamos 1 a la celda B5
        ElseIf F1 - F2 = 1 Then 'Si nos hemos desplazado una fila arriba
                                'hemos pulsado flecha arriba
            CeldaAnterior.Activate
            Range("B4") = Range("B4") + 1   '
        ElseIf F2 - F1 = 1 Then 'Si nos hemos desplazado una fila abajo
                                'hemos pulsado flecha abajo
            CeldaAnterior.Activate
            Range("B4") = Range("B4") - 1   'restamos
        Else                     'Este caso no creo que se dé.
            Set CeldaAnterior = Target
        End If
    End If
Worksheet_SelectionChange_Err:
End Sub

-------------Y este el código de la Hoja9 del otro libro:

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
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.Speech.SpeakCellOnEnter = Target.Address = "$S$23"
    Dim Lin As Integer, Col As Integer, Salir As Boolean
    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 Col >= 18 And Col <= 30 And Fil >= 3 And Fil <= 15 Then Cells(19, 19) = Target.Value
    If Col = 13 And Fil = 10 Then
        Fila_Destin = 2
        Colu_Destin = 32: Texto = Cells(10, "M"): Salir = False
         For Fil = 42 To 42 Step 15
            For Col = 37 To 1086 Step 14
                If Texto = Cells(Fil, Col) Then
                    For f = 0 To 0
                        For c = 0 To 13
                            Cells(f + Fila_Destin, c + Colu_Destin) = Cells(f + Fil, c + Col)
                        Next
                    Next
                    Salir = True: Exit For
                End If
            Next
            If Salir = True Then Exit For
        Next
    End If
    Application.EnableEvents = True
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 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 juntar en una hoja el código de otra hoja de otro libro distinto y que funcionen los 2 códigos?

Publicado por Antoni Masana (2488 intervenciones) el 05/04/2019 09:00:41
Asi:

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
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.Speech.SpeakCellOnEnter = Target.Address = "$S$23"
 
    Dim Lin As Integer, Col As Integer, Salir As Boolean
    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 Col >= 18 And Col <= 30 And Fil >= 3 And Fil <= 15 Then Cells(19, 19) = Target.Value
    If Col = 13 And Fil = 10 Then
        Fila_Destin = 2
        Colu_Destin = 32: Texto = Cells(10, "M"): Salir = False
         For Fil = 42 To 42 Step 15
            For Col = 37 To 1086 Step 14
                If Texto = Cells(Fil, Col) Then
                    For f = 0 To 0
                        For c = 0 To 13
                            Cells(f + Fila_Destin, c + Colu_Destin) = Cells(f + Fil, c + Col)
                        Next
                    Next
                    Salir = True: Exit For
                End If
            Next
            If Salir = True Then Exit For
        Next
    End If
    Application.EnableEvents = True
 
    Dim F1 As Long, C1 As Long, F2 As Long, C2 As Long
 
    On Error GoTo Worksheet_SelectionChange_Err
 
    If Target.Cells.Count = 1 Then 'Solo está seleccionada una celda
        F1 = CeldaAnterior.Row
        C1 = CeldaAnterior.Column
        F2 = Target.Row
        C2 = Target.Column
        If Abs(C1 - C2) + Abs(F1 - F2) > 1 Then 'Si nos movemos más de una celda
            Set CeldaAnterior = Target
        ElseIf C1 - C2 = 1 Then 'Si nos hemos desplazado una columna a la izquierda
                                'hemos pulsado flecha izquierda
            CeldaAnterior.Activate 'Volvemos a la celda
            Range("B5") = Range("B5") - 1   'restamos 1 a la celda B5
        ElseIf C2 - C1 = 1 Then 'Si nos hemos desplazado una columna a la derecha
                                'hemos pulsado flecha derecha
            CeldaAnterior.Activate
            Range("B5") = Range("B5") + 1   'sumamos 1 a la celda B5
        ElseIf F1 - F2 = 1 Then 'Si nos hemos desplazado una fila arriba
                                'hemos pulsado flecha arriba
            CeldaAnterior.Activate
            Range("B4") = Range("B4") + 1   '
        ElseIf F2 - F1 = 1 Then 'Si nos hemos desplazado una fila abajo
                                'hemos pulsado flecha abajo
            CeldaAnterior.Activate
            Range("B4") = Range("B4") - 1   'restamos
        Else                     'Este caso no creo que se dé.
            Set CeldaAnterior = Target
        End If
    End If
 
Worksheet_SelectionChange_Err:
 
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 juntar en una hoja el código de otra hoja de otro libro distinto y que funcionen los 2 códigos?

Publicado por celia (437 intervenciones) el 05/04/2019 11:46:35
Genial Antoni !!! Mil gracias más.
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