Excel - Ejecutar código con tecla Enter y botón (CommandButton)

   
Vista:
Imágen de perfil de JoaoM

Ejecutar código con tecla Enter y botón (CommandButton)

Publicado por JoaoM (203 intervenciones) el 10/03/2017 21:00:21
Hola amigos.

Les pido una más para lo siguiente; trato de usar esta macro, sea con tecla Enter o botón en formulario

Macro: anteriormente era Private Sub CommandButton1_Click() Directa desde el botón ahora la pase a un módulo normal y desde ahí la llamo con un Call

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
Sub Comando() 'Validar Nuevo
Dim sonsat As Long
'Dim vcS As String
'Dim vtx As String
Dim i As Double
Dim vcS()
Dim vtx()
    Application.ScreenUpdating = False
    '1º Array de nombre de control
    vcS = Array("Textbox1", "Textbox2", "Textbox3", "Textbox4", "TextBox8", "TextBox10", "TextBox12")
            '2º Array de mensaje a presentar segun el orden de los controles
    vtx = Array("Minimo Nombre y Apellido", "Nombre de compañia", "Dirección de residencia", _
            "Ciudad donde reside", "# de Teléfono para contacto", "Dirección de E-Mail", "Ingresos Estimados")
    For i = LBound(vcS) To UBound(vcS)
        If Controls(vcS(i)) = Empty Then
            MsgBox "Debes Introducir " & vtx(i), vbExclamation, "ALTA"
            Controls(vcS(i)).SetFocus 'tira el focu al control designado
            Exit Sub
        End If
    Next
    If Not IsNumeric(TextBox12.Text) Then 'Solo para ingreso de números
        MsgBox "Por favor, introduzca  en Ingresos Estimados SOLO valor numérico.", vbExclamation
        TextBox12.SetFocus
        Exit Sub
    End If
    sonsat = Sheets("Data").[a65536].End(3).Row + 1
    Call Main 'Progress Bar
    Cells(sonsat, 1) = TextBox1
    Cells(sonsat, 2) = TextBox2
    Cells(sonsat, 3) = TextBox3
    Cells(sonsat, 4) = TextBox4
    Cells(sonsat, 5) = TextBox5
    Cells(sonsat, 6) = TextBox6
    Cells(sonsat, 7) = TextBox7
    Cells(sonsat, 8) = TextBox8
    Cells(sonsat, 9) = TextBox9
    Cells(sonsat, 10) = TextBox10
    Cells(sonsat, 11) = TextBox11
    Cells(sonsat, 12) = TextBox12
    MsgBox "Registro completo"
    Call Ordenar_Data
    ListBox1.List = Sheets("Data").Range("a2:l" & [a65536].End(3).Row).Value 'Actualiza listbox
    TextBox14.Value = ListBox1.ListCount
    Application.ScreenUpdating = True
End Sub

Para poder usar también el botón (CommandButton1)
1
2
3
Private Sub CommandButton1_Click()
Call Comando
End Sub

Si uso el CommandButton1, todo va bien, pero si uso esto, ya no me funciona como con el botón CommandButton1:
1
2
3
Private Sub textBox12_keydown(ByVal keycode As MSforms.ReturnInteger, ByVal Shift As Integer)
If keycode = 13 Then Comando
End Sub

Solo me funciona si el foco está en el TextBox12 y quiero que me funcione tal como es la macro Sub Comando cuando la ejecuto desde el botón CommandButton1
Claro que solo para ese porque esta para eso per quiero que se use también la tecla Enter y que se ejecute tal como con el botón CommandButton


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
Imágen de perfil de Andres Leonardo

Ejecutar código con tecla Enter y botón (CommandButton)

Publicado por Andres Leonardo (785 intervenciones) el 10/03/2017 22:03:46
deberias colocar ese mismo llamada dependiendo del control en el formulario

el label otro label etc no solo desde text12 como indicas


recuerda el comand button es uno de todos los controles al menos el formulario, el command y el text

ahora si estas en otro text y presiones enter no te va a funcionar
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

Ejecutar código con tecla Enter y botón (CommandButton)

Publicado por JoaoM (203 intervenciones) el 11/03/2017 00:41:57
Hola Andres.
Pues eso es lo que busco hacer, que al pisar Enter, que se ejecute la macro este en que TextBox este, igual como sea pisar el boton
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

Ejecutar código con tecla Enter y botón (CommandButton)

Publicado por JoaoM (203 intervenciones) el 11/03/2017 01:10:28
He usado esto
1
2
3
4
5
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
Call comando
End If
End Sub
para cada textBox y son 12 per no me funciona perfecto
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 Andres Leonardo

Ejecutar código con tecla Enter y botón (CommandButton)

Publicado por Andres Leonardo (785 intervenciones) el 13/03/2017 22:51:39
podrias subri tu libro...
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

Ejecutar código con tecla Enter y botón (CommandButton)

Publicado por JoaoM (203 intervenciones) el 14/03/2017 19:39:22
Claro que si Andres. No he podido venir mas seguido por x circunstancias.

La macro del ingreso esta en un modulo llamado ParaTeclaEnter y para cada uno de los TextBox esta en el modulo de codigo del formulario
TextBox1
TextBox2
TextBox3
TextBox4
TextBox8
TextBox10
TextBox12
con evento Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) cada uno
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 Andres Leonardo

Ejecutar código con tecla Enter y botón (CommandButton)

Publicado por Andres Leonardo (785 intervenciones) el 20/03/2017 22:48:51
Con esto consegui recorrer los textbox y poner el mensaje en todo caso podrias adaptarlo por que cuando creas ese array no me deja recorrerlo :S

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
Sub Comando() 'Validar Nuevo
Dim sonsat As Long
'Dim vcS As String
'Dim vtx As String
Dim i As Double
Dim vcS()
Dim vtx()
Dim cControl As Control
    Application.ScreenUpdating = False
    '1º Array de nombre de control
    vcS = Array("Textbox1", "Textbox2", "Textbox3", "Textbox4", "TextBox8", "TextBox10", "TextBox12")
 
            '2º Array de mensaje a presentar segun el orden de los controles
    vtx = Array("Minimo Nombre y Apellido", "Nombre de compañia", "Dirección de residencia", _
            "Ciudad donde reside", "# de Teléfono para contacto", "Dirección de E-Mail", "Ingresos Estimados")
 
    For Each cControl In UserForm1.Controls
         If TypeName(cControl) = "TextBox" Then
                MsgBox cControl.Name
                If cControl.Text = Empty Then
                    MsgBox "Debes Introducir " & cControl.Name, vbExclamation, "ALTA"
                    cControl.SetFocus 'tira el focu al control designado
                    Exit Sub
                End If
          End If
 
    Next cControl
'    For i = LBound(vcS) To UBound(vcS)
'        If Controls(vcS(i)) = Empty Then
'            MsgBox "Debes Introducir " & vtx(i), vbExclamation, "ALTA"
'            Controls(vcS(i)).SetFocus 'tira el focu al control designado
'            Exit Sub
'        End If
'    Next
'    If Not IsNumeric(TextBox12.Text) Then 'Solo para ingreso de números
'        MsgBox "Por favor, introduzca  en Ingresos Estimados SOLO valor numérico.", vbExclamation
'        TextBox12.SetFocus
'        Exit Sub
'    End If
 
    sonsat = Sheets("Data").[a65536].End(3).Row + 1
 
   ' Call Main 'Progress Bar
 
    Cells(sonsat, 1) = TextBox1
    Cells(sonsat, 2) = TextBox2
    Cells(sonsat, 3) = TextBox3
    Cells(sonsat, 4) = TextBox4
    Cells(sonsat, 5) = TextBox5
    Cells(sonsat, 6) = TextBox6
    Cells(sonsat, 7) = TextBox7
    Cells(sonsat, 8) = TextBox8
    Cells(sonsat, 9) = TextBox9
    Cells(sonsat, 10) = TextBox10
    Cells(sonsat, 11) = TextBox11
    Cells(sonsat, 12) = TextBox12
    MsgBox "Registro completo"
 
    Call Ordenar_Data
 
    ListBox1.List = Sheets("Data").Range("a2:l" & [a65536].End(3).Row).Value 'Actualiza listbox
    TextBox14.Value = ListBox1.ListCount
    Application.ScreenUpdating = True
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

Ejecutar código con tecla Enter y botón (CommandButton)

Publicado por JoaoM (203 intervenciones) el 21/03/2017 01:13:19
Gracias Andres
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