With Range("A3") Код:
For i = 0 To RowCount
If .Offset(i, 0) = ID Then
GoodsNum = Application.Inputbox("Enter number of commodities you want to buy", "Buying of commodities")
'очень важна часть когда, нам нужно присвоить переменным необхимые данные
Price = .Offset(i, 1)
NumGoodsDics = .Offset(i, 2)
Discount = .Offset(i, 3)
Else
...
End If
Next i
Переход с For Next на Do Loop
Как можно переделать код с For Next на Do Loop, а может и на For each.
Код:
With Range("A3")
i=0
DoWhile i <=RowCount
If .Offset(i, 0) = ID Then
GoodsNum = Application.Inputbox("Enter number of commodities you want to buy", "Buying of commodities")
Price = .Offset(i, 1)
NumGoodsDics = .Offset(i, 2)
Discount = .Offset(i, 3)
Else
...
End If
Loop
End With
i=0
DoWhile i <=RowCount
If .Offset(i, 0) = ID Then
GoodsNum = Application.Inputbox("Enter number of commodities you want to buy", "Buying of commodities")
Price = .Offset(i, 1)
NumGoodsDics = .Offset(i, 2)
Discount = .Offset(i, 3)
Else
...
End If
Loop
End With
Код:
With Range("A3")
For Each i in .Rows
If .Offset(i.index, 0) = ID Then
GoodsNum = Application.Inputbox("Enter number of commodities you want to buy", "Buying of commodities")
Price = .Offset(i.index, 1)
NumGoodsDics = .Offset(i.index, 2)
Discount = .Offset(i.index, 3)
Else
...
End If
Next
End With
For Each i in .Rows
If .Offset(i.index, 0) = ID Then
GoodsNum = Application.Inputbox("Enter number of commodities you want to buy", "Buying of commodities")
Price = .Offset(i.index, 1)
NumGoodsDics = .Offset(i.index, 2)
Discount = .Offset(i.index, 3)
Else
...
End If
Next
End With
Не уверен, есть ли в свойство row.index. Если второй код работать нормально не будет, значит нет. Тогда так:
Код:
With Range("A3")
i=o
For Each c in .Rows
If .Offset(i, 0) = ID Then
GoodsNum = Application.Inputbox("Enter number of commodities you want to buy", "Buying of commodities")
Price = .Offset(i, 1)
NumGoodsDics = .Offset(i, 2)
Discount = .Offset(i, 3)
Else
...
End If
i=i+1
Next
End With
i=o
For Each c in .Rows
If .Offset(i, 0) = ID Then
GoodsNum = Application.Inputbox("Enter number of commodities you want to buy", "Buying of commodities")
Price = .Offset(i, 1)
NumGoodsDics = .Offset(i, 2)
Discount = .Offset(i, 3)
Else
...
End If
i=i+1
Next
End With
Не могу разобраться в последних двух примерах. Помогите пожалуйста.
Что именно вас смущает? Распишите все строки, какие понимаете. Даже если считаете, что оны неверны.
Меня не смущают 2 примера с For Each Next, но дело в том, что поиск не ведется, вариант с Do Loop находит, что ввели, а с For Each Next - нет. Значит должна где то быть ошибка.
Может и есть - писал с головы, у меня нет Visual Basic'а . Проверь дебаггером. Он никогда не подводил.