Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Переход с For Next на Do Loop

23K
22 февраля 2008 года
ttat01
17 / / 02.10.2007
Как можно переделать код с For Next на Do Loop, а может и на For each.
Код:
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
251
22 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Можно, но зачем?
Код:
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


Код:
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

Не уверен, есть ли в свойство 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
23K
26 февраля 2008 года
ttat01
17 / / 02.10.2007
Не могу разобраться в последних двух примерах. Помогите пожалуйста.
251
27 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Что именно вас смущает? Распишите все строки, какие понимаете. Даже если считаете, что оны неверны.
23K
27 февраля 2008 года
ttat01
17 / / 02.10.2007
Меня не смущают 2 примера с For Each Next, но дело в том, что поиск не ведется, вариант с Do Loop находит, что ввели, а с For Each Next - нет. Значит должна где то быть ошибка.
251
27 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Может и есть - писал с головы, у меня нет Visual Basic'а . Проверь дебаггером. Он никогда не подводил.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог