Visual Basic - Ayuda con macro

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

Ayuda con macro

Publicado por jesus (1 intervención) el 25/07/2019 17:08:45
Hola gente del foro. Necesito si alguien me puede dar una mano con una macro que estoy haciendo en el programador de excel. lo que debería hacer la macro es lo siguiente . si en la celda A1 " que recibe datos de un" plc cambia de valor >0 llama una macro x esta lo que hace es seleccionar otra celda, hasta ahi todo bien .
Lo que sucede es que no logro que la macros que llama a macros x vea el valor de la celda, aunque la celda cambie de valor no llama a macro x pero si yo ingreso el valor desde el teclado del pc borrando la dirección si ejecuta la macro.
Bueno ahi les dejo la inquietud, gracias y saludos
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
Private Sub worksheet_change(ByVal target As Range)
 dato = "a1"
 If Not Application.Intersect(target, Range(dato)) Is Nothing Then
 Call test_1
 End If
 End Sub
Sub test_1()
If Range("A1") = 1 Then
Range("b1").Select
Range("b1").Copy
End If
If Range("A1") = 2 Then
Range("b2").Select
Range("B2").Copy
End If
If Range("A1") = 3 Then
Range("b3").Select
Range("B3").Copy
End If
If Range("A1") = 4 Then
Range("b4").Select
Range("B4").Copy
End If
If Range("A1") = 5 Then
Range("b5").Select
Range("B5").Copy
End If
If Range("A1") = 6 Then
Range("b6").Select
Range("B6").Copy
End If
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: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Ayuda con macro

Publicado por Antoni Masana (558 intervenciones) el 26/07/2019 08:00:07
Primero vamos a simplificar el código:

1
2
3
4
5
6
7
8
9
10
Private Sub worksheet_change(ByVal target As Range)
    If target.Address = "$A$1" Then Call test_1
End Sub
 
Sub test_1()
    If Range("A1") >= 1 And Range("A1") <= 6 Then
       Range("B" & Range("A1")).Select
       Range("B" & Range("A1")).Copy
    End If
End Sub

¿Que hace? Lo que se espera, cada vez que se modifica la celda A1 y el valor sea un número del 1 al 6 seleccione una celda de la columna B.

Ahora bien no entiendo que quieres decir con " las macros que llama a macros x vea el valor de la celda"

Cuando hablas de macros x ¿te refieres a test_1?
Cuando hablas de las macros que llaman ¿Que macros? Yo solo veo una que llama a otra.

Para el problema: "vea el valor de la celda": El 100% de las veces es que falta indicar la hoja, es decir en que hoja tiene que buscar la celda, cuando la hoja esta activa funciona y cuando esta otra hoja no funciona la macro.

Solución:

1
2
3
4
5
6
7
8
Sub test_1()
    With Sheets("Hoja1")
        If .Range("A1") >= 1 And .Range("A1") <= 6 Then
           .Range("B" & Range("A1")).Select
           .Range("B" & Range("A1")).Copy
        End If
    End With
End Sub

Si aun asi no funciona sube el libro para ver donde falla.

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