Я новичок в vba и использую его только пару месяцев. Я в основном учился, когда я ухожу. Несмотря на это, я пытаюсь написать код для ухода за множеством функций. Я написал код ниже, который запускается из командной кнопки в пользовательской форме. В основном код должен искать строку на листе Excel и проверять пару фрагментов информации, а затем предпринимать действия. Если код не может подтвердить совпадение между строками и строками в пользовательской форме, он останавливается и отображает сообщение об ошибке. Если он может проверить соответствие информации, предполагается, что она заполняет некоторую информацию в этой строке. Я понимаю, что этот код, который я написал, вероятно, полностью окутан и определенно не изящный, однако он работал до тех пор, пока я не добавил проверку кода продукта. Пожалуйста, кто-нибудь может помочь? Я посмотрел, посмотрел и не нашел решения.Вложенные ifs в vba
Вот код:
Private Sub AddDelivButton_Click()
Sheets("Deliveries").Activate
Dim number As Integer, rownumber As Integer, result As Long, i As Integer
number = POTextBox.Value
rownumber = 0
result = 1000000
For i = 1 To 25000
If Cells(i, 1).Value = number Then
result = Cells(i, 1).Value
rownumber = i
End If
Next i
If result = 1000000 Then
MsgBox "PO Number Not Found"
Sheets("Dashboard").Activate
Exit Sub
Else
Cells(rownumber, 1).Select
ActiveCell.EntireRow.Cells(3).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
ActiveCell.EntireRow.Cells(5).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
ActiveCell.EntireRow.Cells(7).Select
If ActiveCell.Value <> ProdCodeListBox1.Value Then
MsgBox "Product Code Not Found"
Sheets("Dashboard").Activate
Exit Sub
Else
ActiveCell.EntireRow.Cells(10).Select
If ActiveCell.Value = "" Then
ActiveCell.Value = ProdCodeListBox1.Value
ActiveCell.EntireRow.Cells(11).Value = WeightTextBox1.Value
ActiveCell.EntireRow.Cells(12).Value = DateTextBox1.Value
Else
ActiveCell.EntireRow.Cells(13).Select
If ActiveCell.Value = "" Then
ActiveCell.Value = ProdCodeListBox1.Value
ActiveCell.EntireRow.Cells(14).Value = WeightTextBox1.Value
ActiveCell.EntireRow.Cells(15).Value = DateTextBox1.Value
Else
Это продолжается в течение нескольких итераций и для экономии места я не включил их все здесь. Достаточно сказать, что последние два оператора if работали, пока я не добавил проверку для ProdCodeListBox1.
Любая помощь будет очень признательна! Даже если это что-то простое, я упускаю из виду.
Спасибо!
Большое спасибо за помощь! Это было легко и решило проблему немедленно. Я понимаю ваш комментарий к ActiveCell и Select. В основном я учился, но я хочу научиться правильно кодировать. К сожалению, иногда я изучаю вещи после того, как я уже написал столько строк, которые я не хочу возвращать и повторять! – user2544753