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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2011, 11:25   #1
Othergirl
Пользователь
 
Регистрация: 24.10.2011
Сообщений: 18
По умолчанию циклы vba

В поиске про циклы выдает инфу только про C++, а нужно vba офис 2010

Не получается организовать цикл.
Привожу примеры:

в первом все работает,как часы

Код:
    'Sub Test1 (fill out Art/Doc)
        ThisWorkbook.Activate
        ActiveSheet.Range("C6").Select ' choosing cell C6, first cell in loop
                If ActiveCell.Value > 99999 And ActiveCell.Value <> "" Then
10                      If ActiveCell.Value < 500000 Then
                            ActiveCell.Offset(0, -1) = "Doc"
                            Else
                            ActiveCell.Offset(0, -1) = "Art"
                        End If
                Else: GoTo 20
                End If
20                  ActiveCell.Offset(1, 0).Select
                        If IsEmpty(ActiveCell.Value) = False Then
                            GoTo 10
                        Else: ActiveCell.Offset(1, 0).Select
                            If IsEmpty(ActiveCell.Value) = False Then
                                GoTo 10
                            Else: ActiveSheet.Range("C6").Select
                            End If
                        End If                                                                      'WORKS ALL SUB TEST1
       'Exit Sub ' Test1

А второй никак не поддается
находит первое значение, а на втором (где цикл начинается) выдает ошибку run time error 9


Код:
     'Sub Test3 (fill out names/description from archive)
            ActiveSheet.Range("C6").Select
            iArchive = "G:\Archive\ReformTech_Number_Register.xlsx"
            iAR = "Article register"
            iDR = "Document register"
            vValue = ActiveCell.Value
                 
                 Workbooks.Open Filename:=iArchive, ReadOnly:=True
                       
                       'add if open, do not open again
                       
                       
30                    Dim cForFind As Range
                       If vValue < 500000 Then                                              'works
                            Worksheets(iDR).Select
                            Else
                            Worksheets(iAR).Select                                        'works
                        End If
               
                   Set cForFind = Range("a1:a25000").Find(vValue, , xlValues, xlPart)
    
                        If cForFind Is Nothing Then
                            MsgBox "Art/Doc not found", vbExclamation
                        Else
                            ThisWorkbook.Activate
                            ActiveCell.Offset(0, 2) = cForFind.Offset(0, 1)
                            ActiveCell.Offset(0, 3) = cForFind.Offset(0, 2)
                        End If
                        
                        ActiveCell.Offset(1, 0).Select
                        vValue = ActiveCell.Value
                        If IsEmpty(ActiveCell.Value) = False Then
                            GoTo 30
                        Else: ActiveCell.Offset(1, 0).Select
                            If IsEmpty(ActiveCell.Value) = False Then
                                GoTo 30
                            Else: ThisWorkbook.Activate
                            ActiveSheet.Range("C6").Select
                            End If
                        End If
                    Exit Sub


'Exit Sub ' Test2
Объясните,пожалуйста,в чем разница. Никак не могу найти ошибку

Последний раз редактировалось Othergirl; 25.10.2011 в 11:56.
Othergirl вне форума Ответить с цитированием
Старый 25.10.2011, 12:25   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Управляющие структуры ... Циклы
Excel VBA
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 25.10.2011, 12:40   #3
Othergirl
Пользователь
 
Регистрация: 24.10.2011
Сообщений: 18
По умолчанию

Когда читаешь теорию всегда все понятно, но конкретно...
Я пробовала вставить цикл Do until, но он ячейки пересчитывает, а значения из соседнего файла не берет. Есть основания полагать,что закралась ошибка, а может и не одна
Othergirl вне форума Ответить с цитированием
Старый 25.10.2011, 12:48   #4
Othergirl
Пользователь
 
Регистрация: 24.10.2011
Сообщений: 18
По умолчанию

Победила проблему с помощью Do until
Правда, в чем была ошибка, так и не поняла,
буду благодарна, если кто-нибудь объяснит
Othergirl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как в VBA создавать циклы Lyudm Microsoft Office Excel 4 12.11.2010 09:32
vba - циклы ksenechka Помощь студентам 2 15.05.2010 22:42
циклы в VBA POSH Помощь студентам 0 23.04.2010 16:21
VBA.Циклы.Линейные алгоритмы.Условные конструкции. Екатерина нск Помощь студентам 1 17.01.2010 17:37
vba закрасить все циклы синим цветом Berckyt Помощь студентам 0 19.04.2009 14:21