Excel - Simplificar 2 Macros VBA Excel a una sola

   
Vista:
Imágen de perfil de JoaoM

Simplificar 2 Macros VBA Excel a una sola

Publicado por JoaoM (200 intervenciones) el 23/07/2017 22:04:48
Tengo estas 2 macros para 2 OptionButton

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub OptionButton1_Click()
If txtEntrada.Locked = True Then
txtEntrada.Locked = False
txtSalida.Locked = True
txtEntrada.SetFocus
txtEntrada.Value = ""
txtSalida.Value = ""
End If
End Sub
 
Private Sub OptionButton2_Click()
If txtSalida.Locked = True Then
txtSalida.Locked = False
txtEntrada.Locked = True
txtSalida.SetFocus
txtEntrada.Value = ""
txtSalida.Value = ""
End If
End Sub

Quiero pedir que algun experto que existen acá me la simplifique

Son 2 macros pero ¿se puede en una sola y mas corta que estas 2?
Gracias
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

Simplificar 2 Macros VBA Excel a una sola

Publicado por JuanC juanc2942@gmail.com (1164 intervenciones) el 24/07/2017 13:14:52
fijate que estoy usando la propiedad Tag de OptionButton

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub OptionButton1_Click()
Call onClick(OptionButton1)
End Sub
 
Private Sub OptionButton2_Click()
Call onClick(OptionButton2)
End Sub
 
Sub onClick(ByVal ob As MSForms.OptionButton)
 
txtEntrada.Value = ""
txtSalida.Value = ""
 
If ob.Tag = 1 Then
   txtSalida.Locked = True
   txtEntrada.Locked = False
   txtEntrada.SetFocus
Else
     txtSalida.Locked = False
     txtEntrada.Locked = True
     txtSalida.SetFocus
End If
 
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
1
Comentar
Imágen de perfil de JoaoM

Simplificar 2 Macros VBA Excel a una sola

Publicado por JoaoM (200 intervenciones) el 24/07/2017 14:22:08
Hola juanC, gracias por tu tiempo
Me poarece que hay un fallo en tu macro, cosa que yo no tengo la capacidad de saber cual por mi inexperiencia, hago lo basico del basico, y y
Veo que cualquier de los Option actúa SOLO sobre un textBox, txtSalida, ¿es con ese fin el evento? según mi observación, no me parece, es decir, tanto el option1 como el 2 actúa sobre UN SOLO textbox, txtSalida.
Tengo 2 TextBox, uno para Entrada de material y otro para salida.
Al pisar el option1, limpia en txtSalida y activa el txtEntrada, y si piso el option2 limpia el txtEntrada y activa el txtSalida.
Dame información sobre eso

La macro para Validar Entrada o Salida es "Si txtEntrada contiene valor numérico pasa los datos del txtEntrada a la hoja Entrada/Salida columna Entrada, y si es el txtSalida, pasa el valor del txtSalida a la hoja “Entrada/Salida” columna Salida. Además, la misma macro tiene que en otra hoja "Productos" SOLO sumar o restar según lo anterior (entrada o salida)
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

Simplificar 2 Macros VBA Excel a una sola

Publicado por JuanC (1164 intervenciones) el 24/07/2017 14:32:13
cambiaste el Tag a cada componente?
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 JoaoM

Simplificar 2 Macros VBA Excel a una sola

Publicado por JoaoM (200 intervenciones) el 24/07/2017 15:22:11
Realmente los nombres son los mismos que tengo arriba



1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub onClick(ByVal ob As MSForms.OptionButton)
txtEntrada.Value = ""
txtSalida.Value = ""
 
If ob.Tag = 1 Then
        txtEntrada.Locked = False
        txtSalida.Locked = True
        txtEntrada.SetFocus
Else
        txtSalida.Locked = False
        txtEntrada.Locked = True
        txtSalida.SetFocus
End If
End Sub

Funciona solo con el txtSalida, el txtEntrada lo ignora
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