Показать сообщение об ошибке, если значение TextBox выше, чем указанная ячейка c в VBA - PullRequest
0 голосов
/ 13 февраля 2020

Как и в заголовке, я хочу проверить запись и сравнить ее с указанной c ячейкой (iLastRow, 8). Для этого я поставил этот знак перед другими условиями.

        Test = (TextBox2.Text) > ws.Cells(iLastRow, 8)
      If Test = True Then
            MsgBox "Not enough quantity in stock!"
      Else

Но сообщение отображается каждый раз, даже если число меньше. Странно то, что код работает хорошо, если заполнены все ячейки между столбцами с 4 по 7, и больше не работает, если я стираю содержимое более чем двух боковых строк. Вот и весь мой код:

Private Sub CommandButton1_Enter()

  Dim emptyRow As Long

  Dim ws As Worksheet

  Set ws = ActiveSheet

  ActiveSheet.Name = "Micrux"

  Dim iLastRow As Long, iFound As Long

  Dim rng, bEmpty As Boolean, c As Integer

  Dim Test As Boolean

  bEmpty = True


   With ws

      iLastRow = .Range("A" & .Rows.Count).End(xlUp).Row

      Set rng = .Range("A1:A" & iLastRow + 1).Find(ComboBox1.Value, _

        After:=.Range("A" & iLastRow + 1), _

        LookIn:=xlValues, _

        lookat:=xlWhole, _

        searchorder:=xlByRows, _

        SearchDirection:=xlPrevious)


      Test = (TextBox2.Text) > ws.Cells(iLastRow, 8)

    If Test = True Then

      MsgBox "Not enough quantity in stock!"

    Else

   If rng Is Nothing Then

       iFound = iLastRow + 1

   Else
       iFound = rng.Row

       For c = 4 To 7
         If Len(.Cells(iFound, c)) > 0 Then bEmpty = False
       Next

       If bEmpty = False Then
          iFound = iFound + 1
         .Cells(iFound, 1).EntireRow.Insert xlShiftDown

          .Cells(iFound, 7).Value = TextBox2.Text
          .Cells(iFound, 6).Value = TextBox3.Text
          .Cells(iFound, 5).Value = ComboBox2.Value
          .Cells(iFound, 4).Value = TextBox1.Text

     Else
          .Cells(iFound, 7).Value = TextBox2.Text
          .Cells(iFound, 6).Value = TextBox3.Text
          .Cells(iFound, 5).Value = ComboBox2.Value
          .Cells(iFound, 4).Value = TextBox1.Text
      End If

  End If

       End If

End With

Unload Me

End Sub

Заранее спасибо

1 Ответ

0 голосов
/ 14 февраля 2020

Наконец-то я нашел проблему и изменил для нее часть кода:

      iFound = rng.Row
        Test = Val(TextBox2.Text) > ws.Cells(iFound, 8).Value
      If Test = True Then
        MsgBox "Not enough quantity in stock!"
      Else

Это работает довольно хорошо, и это во многом благодаря вашей помощи Siddharth Rout !!!!

...