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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2012, 02:15   #1
zlobnaya
 
Регистрация: 01.05.2012
Сообщений: 5
По умолчанию Block if without end if (error)

Помогите пжста дописать макрос, никак не могу с ним побороться
выдает ошибку Block if without end if
в книге есть 2 листа - необходимо перенести данные из одного листа в другой со след. условиями: выбрать из второго листа (столбец A) только те строки, в которых есть нужная дата (ячейка AW2); добавлять строки из второго листа на пустую строку первого листа
Private Sub CommandButton1_Click()
Dim j As Integer
j = 2
For i = 3 To 1000
work:


While Trim(Sheets("1").Range("G" & CStr(j)).Text) <> ""
j = j + 1

Wend
If Sheets("2").Range("A" & CStr(i)).Value = Range("AW2").Value Then

If Trim(Sheets("1").Range("G" & CStr(j + 1)).Text) = "" Then
If Trim(Sheets("1").Range("G" & CStr(j + 2)).Text) = "" Then


Sheets("1").Range("A" & CStr(j)) = Sheets("2").Range("A" & CStr(j))


MsgBox ("строка " & Sheets("2").Range("G" & CStr(j)) & " добавлена")
Else
j = j + 1
GoTo work
End If
Else
j = j + 1
GoTo work
End If

j = 5

End Sub
zlobnaya вне форума Ответить с цитированием
Старый 11.05.2012, 07:41   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

займитесь арифметикой--- сколько if\endif
-----------------
не баланс
угадать место вставки недостающего можете только вы сами
---------------

Код:
If Sheets("2").Range("A" & CStr(i)).Value .... Then
If Trim(Sheets("1")......= "" Then
If Trim(Sheets("1")..... = "" Then
..
Else
..
End If
Else
..
End If
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 11.05.2012, 08:35   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

попробуйте выложить файл исходными с данными, а то непонятно, на каком из листов находится
Цитата:
ячейка AW2
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 12.05.2012, 00:02   #4
zlobnaya
 
Регистрация: 01.05.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
займитесь арифметикой--- сколько if\endif
-----------------
не баланс
угадать место вставки недостающего можете только вы сами
---------------

Код:
If Sheets("2").Range("A" & CStr(i)).Value .... Then
If Trim(Sheets("1")......= "" Then
If Trim(Sheets("1")..... = "" Then
..
Else
..
End If
Else
..
End If
если поставить верное количество End If возникает новая ошибка - For without next..
zlobnaya вне форума Ответить с цитированием
Старый 12.05.2012, 00:09   #5
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

у вас оказывается и next i отсутствует

не заметила
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 12.05.2012, 00:11   #6
ShAM66
Форумчанин
 
Регистрация: 24.02.2012
Сообщений: 160
По умолчанию

Даа, беда не только с арифметикой.
Где Next для
Код:
For i = 3 To 1000
ShAM66 вне форума Ответить с цитированием
Старый 12.05.2012, 00:23   #7
zlobnaya
 
Регистрация: 01.05.2012
Сообщений: 5
По умолчанию

сам файл..
Вложения
Тип файла: zip реестр.zip (1.34 Мб, 31 просмотров)
zlobnaya вне форума Ответить с цитированием
Старый 12.05.2012, 00:29   #8
zlobnaya
 
Регистрация: 01.05.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от ShAM66 Посмотреть сообщение
Даа, беда не только с арифметикой.
Где Next для
Код:
For i = 3 To 1000
я только учусь, не судите строго
на самом деле пыталась соединить два макроса самостоятельно
zlobnaya вне форума Ответить с цитированием
Старый 12.05.2012, 08:23   #9
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

Код:
Private Sub CommandButton1_Click()
    Dim j As Integer
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Set ws1 = Sheets("1")
    Set ws2 = Sheets("2")
    j = 2
    For i = 3 To 10
work:
     Debug.Print
    While Trim(ws2.Range("G" & CStr(j)).Text) <> ""
        j = j + 1
        Debug.Print j;
      
    Wend
    If ws1.Range("A" & CStr(i)).Value = ws1.Range("AW2").Value Then
    
    If Trim(ws2.Range("G" & CStr(j + 1)).Text) = "" Then
        If Trim(ws2.Range("G" & CStr(j + 2)).Text) = "" Then
            
                              
                ws2.Range("A" & CStr(j)) = ws1.Range("A" & CStr(j))
             
                ws2.Range("B" & CStr(j)) = "9493"
                                
                ws2.Range("C" & CStr(j)) = ws1.Range("D" & CStr(j))
                ws2.Range("D" & CStr(j)) = ws1.Range("E" & CStr(j))
                ws2.Range("E" & CStr(j)) = ws1.Range("F" & CStr(j))
                ws2.Range("F" & CStr(j)) = ws1.Range("H" & CStr(j))
                ws2.Range("G" & CStr(j)) = ws1.Range("I" & CStr(j))
                ws2.Range("H" & CStr(j)) = ws1.Range("R" & CStr(j))
                ws2.Range("I" & CStr(j)) = ws1.Range("S" & CStr(j))
                ws2.Range("J" & CStr(j)) = ws1.Range("T" & CStr(j))
                ws2.Range("K" & CStr(j)) = ws1.Range("AG" & CStr(j))
                ws2.Range("Q" & CStr(j)) = ws1.Range("AK" & CStr(j))
                
                                           
                ''MsgBox ("строка " & ws2.Range("G" & CStr(j)) & " добавлена")
        Else
         j = j + 1
         GoTo work
        End If
    Else
     j = j + 1
     GoTo work
    End If
    
    j = 5
End If
Next i
Set ws1 = Nothing
Set ws1 = Nothing
End Sub
предположила, что есть
--отбор по дате
--отбор по пустым записям +1 и +2 не поняла
--пронумеровала ивановых, чтобы видеть кто есть кто
--получила

иванов1
пустая
пустая
иванов4
иванов5
иванов6

скажите по русски, что вы ищете
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 12.05.2012, 22:25   #10
zlobnaya
 
Регистрация: 01.05.2012
Сообщений: 5
По умолчанию

макрос работает, именно такой и нужен, спасибо
только почему-то не делается выборка по дате - должно быть так: макрос ищет нужную дату (которая предварительно вводится в ячейку AW2 листа 2) в столбце A листа 1, далее копирует строки, в которых есть нужная дата в лист 2
а написанный макрос работает так: макрос ищет количество строк, которые занимает нужная дата в столбце А листа 1 и копирует начиная со 2-й строки листа 1 выбранное количество строк в лист 2
надеюсь понятно объяснила..
zlobnaya вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка - Run-time error '91' Object variable or With block variable not set Артур Иваныч Microsoft Office Excel 13 12.09.2012 14:18
run-time error 91 (object variable or with block variable not set) mrs.petrushina Microsoft Office Access 5 19.04.2011 12:59
run-time error 91 (object variable or with block variable not set) mrs.petrushina Microsoft Office Excel 7 05.04.2011 00:22
Display block не block mrgrudge HTML и CSS 2 25.12.2010 11:10