Страницы: 1
RSS
Ошибка в макросе добавляющем в столбец отсутствующие значения
 
Добрый вечер!

Уважаемые форумчане,
сразу хочу попросить прощение за отсутствие примера - выкладываю только часть макроса, сам макрос довольно большой и неоптимальный. Если пример необходим - напишите, пожалуйста, создам отдельный файл.

Часть большего макроса - это макрос, приведенный ниже.
Он должен сравнивать список, размещенный на листе, который я назвал "BazaSht" с несмежным массивом данных - range("D10:P33"  ;)  . И если в массиве есть значение длиной больше 5 символов, которого нет в списке - добавлять его в список снизу.
Но он выдает ошибку "Compile error: End If without block If" в строке, на которую указывает стрелка. Подскажите, пожалуйста почему и как это исправить. Сам испробовал уже различные варианты - ничего не помогает...
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
             Set rRange = Worksheets("TDSheet".Range("D10:P33"
              
             With BazaSht
 
                iLastRow = Range("A7".SpecialCells(xlLastCell).Row
                n = iLastRow + 1
                 
                For Each aCell In Range("A7", Cells(Rows.Count, 1).End(xlUp))
                    For Each rCell In rRange
                        If Len(rCell.Value) > 5 Then
                           If rCell.Value = aCell.Value Then GoTo aNext
                           Else
                                   BazaSht.Cells(n, 1).Value = rCell.Value
                                   n = n + 1
                           End If
 ---->                End If
                   Next rCell
aNext:
                Next aCell
 
             End With
Заранее большое спасибо!
 
а так?
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Set rRange = Worksheets("TDSheet").Range("D10:P33")
With BazaSht
    iLastRow = Range("A7").SpecialCells(xlLastCell).Row
    n = iLastRow + 1
    For Each aCell In Range("A7", Cells(Rows.Count, 1).End(xlUp))
        For Each rCell In rRange
            If Len(rCell.Value) > 5 Then
                If rCell.Value = aCell.Value Then
                    GoTo aNext
                Else
                    BazaSht.Cells(n, 1).Value = rCell.Value
                    n = n + 1
                End If
            End If
        Next rCell
    aNext:
    Next aCell
End With
Изменено: Sanja - 12.02.2014 21:58:40
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Александръ пишет:
GoTo aNext
Перенести на новую строку не пробовали?

Цитата
Александръ пишет:
---->End If
Удалить не пробовали?

Поможет и то, и другое. Весь вопрос - как нужно?
 
Спасибо большое и Sanja, и RAN! Перенос строки с GoTo действительно все поправил и макрос заработал. Но делает абсолютно не то, что нужно...( Добавляет в низ списка что попало - включая элементы самого списка. Удаление End If - то же самое.
К сожалению, я не знаю, как нужно...пишу макрос, зная только основные понятия. Знаю только как он должен работать в идеале - описал выше.
Нашел в сети следующее решение, написанное KuklP, но поскольку в библиотеках даже не ориентируюсь, не понимаю, как его переписать под свою задачу:
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Sub www()
    Dim a, b, i&, n&
    a = Me.[a1].CurrentRegion.Value
    ReDim b(1 To UBound(a, 1) + Sheets(2).UsedRange.Rows.Count, 1 To 1)
    With CreateObject("scripting.dictionary"
    For i = 1 To UBound(a)
        If Not .exists(a(i, 1)) Then _
         n = n + 1: .Item(a(i, 1)) = n: b(n, 1) = a(i, 1)
    Next
    a = Sheets(2).[a1].CurrentRegion.Value
    For i = 2 To UBound(a)
        If Not .exists(a(i, 1)) Then _
         n = n + 1: .Item(a(i, 1)) = n: b(n, 1) = a(i, 1)
    Next
    End With
    Sheets(1).[a1].Resize(n, 1) = b
End Sub
Не подскажете, как его можно переписать?
Заранее спасибо!

З.Ы. Возможно, модератору будет интересно: В сообщения постоянно пропадают скобки - автозамена меняет их на смайлик. После исправления скобка все равно не отображается в сообщении.
 
Модератору интересно другое: почему автор упорно не хочет пользоваться тэгами оформления кода (соотв. кнопка при формировании сообщения есть)?
Вернитесь, отредактируйте. Возможно, Ваш вопрос сам собой отпадет.
 
Цитата
Александръ пишет:
Возможно, модератору будет интересно: В сообщения постоянно пропадают скобки...
Неинтересно - отключайте в сообщении смайлы))
 
Прошу прощения, даже не подозревал об этом. Спасибо, просветили!)
 
Цитата
Юрий М пишет:
Александръ пишет:
Возможно, модератору будет интересно: В сообщения постоянно пропадают скобки...
Неинтересно - отключайте в сообщении смайлы))
Пробовал - все равно смайлы добавлялись)) Теперь уже знаю в чем проблема)
 
Цитата
Вернитесь, отредактируйте
Если и редактировали, то неправильно. Посмотрите сейчас свое сообщение.
Кнопочка <..> - под ней прячутся тэги оформления кода.
 
Александръ, а интересно мне вот что - зачем Вы (см. #8) целиком цитируете? И даже себя.
 
Цитата
Юрий М пишет:
Александръ , а интересно мне вот что - зачем Вы (см. # 8)  целиком цитируете? И даже себя.
Случайно вышло...
Страницы: 1
Читают тему
Loading...