Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2011, 00:42   #1
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию массив

Подскажите, пожалуйста, в чем тут ошибка. должны выводиться все значения по порядку, расположенные в ячейках с 1 по 15.

Sub task()

Dim a(15)

Dim i

Do While i > 0 And i < 16

a(i) = Worksheets(1).Cells(i, 1)

MsgBox a(i)

Loop

MsgBox a(i)



End Sub
Olya1985 вне форума Ответить с цитированием
Старый 23.01.2011, 00:46   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

i равно 0. это и есть ошибка нет нулевого ряда на листе
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.01.2011, 00:50   #3
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию

подскажите, пожалуйста. как изменить скрипт, чтобы устранить ошибку
Olya1985 вне форума Ответить с цитированием
Старый 23.01.2011, 00:54   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Sub task()
Dim a(15)
Dim i
for i = 0 to 16
a(i) = Worksheets(1).Cells(i+1, 1)
next i
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.01.2011, 00:56   #5
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию

да, с использованием for у меня получалось тоже. а do while, do until в случае с массивами применять нельзя?
Olya1985 вне форума Ответить с цитированием
Старый 23.01.2011, 01:12   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
а do while, do until в случае с массивами применять нельзя?
можно
и for... и do... используются для реализации циклов
при использовании for... предполагается что известны начальное и конечное значение, из цикла do... выходим по достижению условия, используйте то, что приведет к более короткой записи.

Sub task()
Dim a(15)
Dim i
do
a(i) = Worksheets(1).Cells(i+1, 1)
i=i+1
loop until i=16
End Sub

а массиву все равно из какого цикла к нему обратились, лишь бы не за рамки массива
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 23.01.2011 в 01:14.
IgorGO вне форума Ответить с цитированием
Старый 23.01.2011, 01:25   #7
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию

спасибо. только вот почему то при выводе значений в msgbox выводятся пустые окна.
Olya1985 вне форума Ответить с цитированием
Старый 23.01.2011, 01:32   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Вполне работает:

Код:
Sub task()
    Dim a(15), i As Byte
    Do While i < 16
        i = i + 1
        a(i) = Worksheets(1).Cells(i, 1)
        MsgBox a(i)
    Loop
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.01.2011, 01:54   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Hugo121,
a(i-1) = Worksheets(1).Cells(i, 1)

Olya1985, где "в msgbox выводятся пустые окна"??
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.01.2011, 02:03   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Да, пропустил...
И тогда Do While i < 15
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 23.01.2011 в 02:05.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W leha_demi Помощь студентам 2 24.09.2011 18:12
Дан массив А(20). Получить массив В(20), в котором В(1)=А(2), В(2)=А(1), В(3)=А(4), В(4)=А(3) и т.д. Выве nikita1 Помощь студентам 5 01.12.2010 18:16
Как конвертировать массив символов в массив байт davinci C++ Builder 6 30.10.2010 18:09
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06