Добрый день, скажите пожалуйста, как на данной форме сделать так, что при нажатии на ENTER или TAB заполнение записи было друг за другом? Сейчас получается что заполнение записи идет по порядку только до 4 строки заполнения, а дальше в разброс. Форма по ссылке Внешняя ссылка удалена администрацией - это нарушение п.3 Правил форума
Код: [vba]
Код
Dim Mz As Integer
Private Sub TextBox1_Change() TextBox1.Enabled = False TextBox2.SetFocus End Sub Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim B ' As Long If Mz = vbNo Then Mz = vbYes: Exit Sub N = LastN B = Me.Controls("TextBox7") If Not IsNumeric(B) Then MsgBox "ВВедите код профессии (число больше нуля)!" Cancel = True: TextBox7.SetFocus: Exit Sub Else B = Val(B) End If Mz = vbYes If B > 0 Then For I = 4 To N If B = Cells(I, 3) Then Mz = MsgBox("Такая запись уже существует! Продолжить?" & vbCrLf & _ "Да - игнорировать совпадения" & vbCrLf & _ "Нет - закрыть форму" & vbCrLf & _ "Отмена - остаемся на вводе кода", vbYesNoCancel) Select Case Mz Case vbCancel 'возврат на ввод категории Cancel = True: TextBox7.SetFocus Case vbNo 'закрыть форму Unload Me Case vbYes 'игнорировать совпадение Mz = vbNo: Exit Sub End Select Exit For End If Next End If End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 0 Mz = vbNo End Sub
Private Sub CommandButton1_Click() Dim Ar, I As Integer, N As Integer Ar = Array(1, 2, 7, 4, 6, 5, 8) 'продолжить массив номерами по порядку следования текстбоксов N = LastN: If N = 3 Then 'пустая таблица Mz = MsgBox("Таблица пустая! Будете заполнять?" & vbCrLf & _ "Да - идём на добавление данных" & vbCrLf & _ "Нет - закрыть форму" & vbCrLf, vbYesNo) If Mz = vbNo Then Unload Me: Exit Sub End If For I = 1 To UBound(Ar) + 1 Cells(N + 1, I) = Me.Controls("TextBox" & Ar(I - 1)) Me.Controls("TextBox" & Ar(I - 1)) = "" Next TextBox1.Enabled = True Me.TextBox1 = Cells(N + 1, 1) + 1 TextBox1.Enabled = False End Sub
[/vba]
Добрый день, скажите пожалуйста, как на данной форме сделать так, что при нажатии на ENTER или TAB заполнение записи было друг за другом? Сейчас получается что заполнение записи идет по порядку только до 4 строки заполнения, а дальше в разброс. Форма по ссылке Внешняя ссылка удалена администрацией - это нарушение п.3 Правил форума
Код: [vba]
Код
Dim Mz As Integer
Private Sub TextBox1_Change() TextBox1.Enabled = False TextBox2.SetFocus End Sub Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim B ' As Long If Mz = vbNo Then Mz = vbYes: Exit Sub N = LastN B = Me.Controls("TextBox7") If Not IsNumeric(B) Then MsgBox "ВВедите код профессии (число больше нуля)!" Cancel = True: TextBox7.SetFocus: Exit Sub Else B = Val(B) End If Mz = vbYes If B > 0 Then For I = 4 To N If B = Cells(I, 3) Then Mz = MsgBox("Такая запись уже существует! Продолжить?" & vbCrLf & _ "Да - игнорировать совпадения" & vbCrLf & _ "Нет - закрыть форму" & vbCrLf & _ "Отмена - остаемся на вводе кода", vbYesNoCancel) Select Case Mz Case vbCancel 'возврат на ввод категории Cancel = True: TextBox7.SetFocus Case vbNo 'закрыть форму Unload Me Case vbYes 'игнорировать совпадение Mz = vbNo: Exit Sub End Select Exit For End If Next End If End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 0 Mz = vbNo End Sub
Private Sub CommandButton1_Click() Dim Ar, I As Integer, N As Integer Ar = Array(1, 2, 7, 4, 6, 5, 8) 'продолжить массив номерами по порядку следования текстбоксов N = LastN: If N = 3 Then 'пустая таблица Mz = MsgBox("Таблица пустая! Будете заполнять?" & vbCrLf & _ "Да - идём на добавление данных" & vbCrLf & _ "Нет - закрыть форму" & vbCrLf, vbYesNo) If Mz = vbNo Then Unload Me: Exit Sub End If For I = 1 To UBound(Ar) + 1 Cells(N + 1, I) = Me.Controls("TextBox" & Ar(I - 1)) Me.Controls("TextBox" & Ar(I - 1)) = "" Next TextBox1.Enabled = True Me.TextBox1 = Cells(N + 1, 1) + 1 TextBox1.Enabled = False End Sub
при нажатии на ENTER или TAB заполнение записи было друг за другом?
Наверное вы имели ввиду переход к следющему полю? Тогда вам в помощь свойство объектов формы TabIndex Расставьте нужную последовательность переходов от 0 и до ...
при нажатии на ENTER или TAB заполнение записи было друг за другом?
Наверное вы имели ввиду переход к следющему полю? Тогда вам в помощь свойство объектов формы TabIndex Расставьте нужную последовательность переходов от 0 и до ...boa