Я хочу, чтобы после того, как я нажму 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
Пользовательская форма