Как выбрать текстовое поле после запуска CommandButton? (SetFocus после того, как Commandbutton не работает) - PullRequest
0 голосов
/ 06 мая 2020

Я хочу, чтобы после того, как я нажму Enter в TextBox1, запускается commandbutton_1, и после этого курсор возвращается в TextBox1. Первая ситуация (раньше у меня было только 1 TextBox и для TextBox1 была активирована опция «Default»): когда я нажимаю Enter, запускается commandbutton_1, и курсор возвращается к TextBox1 - с функцией SetFocus. Теперь: я добавил TextBox2, и мне нужно, чтобы когда я нажимал Enter с курсором внутри TextBox2, он запускал commandbutton_5, но когда курсор находится внутри TextBox1, мне нужно, чтобы он запускал commandbutton_1 и возвращал курсор в TextBox1 после запуска the commandbutton_1.

Я создал код для TextBox2 для запуска commandbutton_5 - он сработал - и отключил «Default» для commandbutton_1, потому что, когда это возможно, даже внутри TextBox2, когда я нажимал Enter, он запускал commandbutton_1.

Но теперь, даже с функцией SetFocus, мой код не возвращает курсор в TextBox1. Команда commandbutton_1 сохраняет выбор после выполнения кода.

Вот код:


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

        If KeyCode = vbKeyReturn Then
            CommandButton1_Click
        Me.TextBox1.SetFocus
        End If

Me.TextBox1.SetFocus
End Sub

-----------------------------------------------------------------------------------------------

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)


        If KeyCode = vbKeyReturn Then
            Call CommandButton5_Click
        End If



End Sub

-----------------------------------------------------------------------------------------------

Private Sub CommandButton5_Click()
'Guardar compra en tabla
Dim i As Variant
Dim j As Variant
Dim TransRowRng As Range
Dim NewRow As Integer
Dim pagamento As Double
Dim a As String
Dim b As Double
Dim Uf1 As UserForm1

Set Uf1 = New UserForm1

'Pagamento
On Error GoTo ErrorHandler
With Application.WorksheetFunction

'pagamento = InputBox("Entre com o pagamento" & vbNewLine & "R$", "varpagamento")  ' vbNewLine

    a = Right(Me.lblTotal, Len(Me.lblTotal) - 1)
    b = CDbl(a) / 100

If Me.TextBox2.Value < b Then GoTo ErrorHandler
If Me.TextBox2.Value - b > 99 Then GoTo ErrorHandler
If Me.TextBox2.Value < 0 Then GoTo ErrorHandler

Uf1.lblTroco = .Dollar(Me.TextBox2.Value - b, 2)
Uf1.Show

End With



'Registro da venda

                With VENTAS
                    '
                    For i = Me.ListBox1.ListCount To 1 Step -1
                        '
                        Set TransRowRng = ThisWorkbook.Worksheets("VENTAS").Cells(1, 1).CurrentRegion
                        NewRow = TransRowRng.Rows.Count + 1
                        .Cells(NewRow, 1).Value = Date
                        .Cells(NewRow, 2).Value = Me.txtConsec.Value
                        '
                        For j = 0 To 4
                            '
                            .Cells(NewRow, j + 3).Value = Me.ListBox1.List(Me.ListBox1.ListCount - i, j)
                            '
                        Next j
                        '
                    Next i
                    '
                '
                MsgBox "Venda registrada.", vbInformation, "EXCELeINFO"
                ListBox1.Clear
                Me.lblProductos = 0
                Me.lblTotal = 0
                Me.TextBox2.Value = ""
                End With






'Unload Me
'
Exit Sub
ErrorHandler:
MsgBox "Valor inválido, tente novamente"
Me.TextBox1.Value = ""
Me.TextBox1.SetFocus
'
End Sub

Авторы для рабочего листа: EXCELeINFO - Formulario de punto de venta. Por: Sergio Alejandro Campos Fecha: 20-ноя-2014

Пользовательская форма

...