Запретить добавление новых строк с помощью VBA в пользовательской форме - PullRequest
0 голосов
/ 04 мая 2020

Я хочу сделать заявление, что если пользователь вводит идентификатор пользователя, которого нет в списке, или пользователь добавляет код, которого тоже нет в списке, он должен выдать сообщение об ошибке и ничего не добавлять.

FindRow - для идентификатора пользователя, а FindRow2 - для кода, который они сканируют.

Мне нужно просто что-то простое, чтобы прекратить добавлять строки, если идентификатор или код не добавляются вручную в Excel.

Любая другая помощь, которую я могу дать, просто спросите меня, пожалуйста.

Вот мой фактический код:

Private Sub ConfirmarEntre_Click()

Dim FindRow As Range, FindRow2 As Range, FindRow3 As Range, WTCHECK As Range
Dim row As String, wtrow As String, var1 As String, var2 As String
Dim AddMe As Range, AddMe2 As Range, AddMe3 As Range, AddWT As Range, Estado As Range, Estado2 As Range

Dim Registros As Workbook

'error block
    On Error GoTo errHandler:

If Me.TextBox1.Value <> "" Then

'Encontrar el legajo en la lista
row = Me.TextBox1.Value
Set FindRow = Hoja2.Range("B:B").Find(What:=row, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set AddMe = Hoja3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Set AddMe2 = Hoja3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 1)
Set AddMe3 = Hoja3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 2)

'Encontrar el WT en la lista
wtrow = Me.TextBox2.Value
Set FindRow2 = Hoja4.Range("D:D").Find(What:=wtrow, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set AddWT = Hoja3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 3)

'Agregar la fecha y hora a la celda
Status = Now
Set Estado = Hoja3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 4)

'Agregar la palabra entregado a la celda
Status2 = "Entregado"
Set Estado2 = Hoja3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 5)

With Registros
'Si lo encuentra, agregarlo a la planilla
Range("2:2").Insert
AddMe.Value = FindRow.Offset(0, 0)
AddMe2.Value = FindRow.Offset(0, 1)
AddMe3.Value = FindRow.Offset(0, 2)
AddWT.Value = FindRow2.Offset(0, 0).Value
Estado.Value = Status
Estado2.Value = Status2
End With

'sort the Registros by "Legajo"
Hoja3.Select
With Registros
Hoja3.UsedRange.Sort Key1:=Range("E1"), Order1:=xlDescending, Header:=xlYes
End With

ElseIf Me.TextBox1.Value = "" Then

MsgBox "El legajo no puede estar vacio"

Exit Sub
End If

MsgBox "Los datos fueron corroborados, puede entregar el WT"

'Deja las casillas vacias cuando termina
TextBox1.Value = ""
TextBox2.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""

'error block
    On Error GoTo 0
    Exit Sub
errHandler:
   ' Verify the data entered, because they are not correct
    MsgBox "Error! Verificar los datos ingresados, porque no son correctos!" & vbCrLf

End Sub

В настоящее время обработчик ошибок выдает ошибку, но сохраняет добавление половины некоторых ячеек, даже если этого не следует делать.

Я пытался с If FindRow.value is Nothing then, но выдает ошибку, что переменная не установлена ​​или не добавлен оператор With.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...