Страницы: 1
RSS
Ошибка при запуске VBA: "Compile error: Next without for"
 
Добрый день. Помогите пожалуйста разобраться, где ошибка. При запуске выскакивает ошибка " Next without for".
Я совсем новичок в этом, поэтому нужна помощь специалистов :)
Код
Sub CreateBonusCard()
'
' CreateBonusCard Макрос
' Создание бонусных карт в PDF-формате на основе списка работников
'

'
Dim i As Integer, lastRow As Integer
    lastRow = Sheets("Список уволенных ").Cells(Rows.Count, 7).End(xlUp).Row
    For i = 7 To lastRow
If Sheets("Список уволенных ").Cells(i, 1).Value = "п" Then
With Sheets("обходной лист")
            .Range("B20").Value = Sheets("Список уволенных ").Cells(i, 4).Value
            .Range("D20").Value = Sheets("Список уволенных ").Cells(i, 6).Value
            .Range("B22").Value = Sheets("Список уволенных ").Cells(i, 5).Value
            End With
            If Sheets("Список уволенных ").Cells(i, 1).Value = "п" Then
With Sheets("Опись документов")
            .Range("B5").Value = Sheets("Список уволенных ").Cells(i, 4).Value
            .Range("B6").Value = Sheets("Список уволенных ").Cells(i, 5).Value
   End With
            Sheets(Array("обходной лист", "Опись документов")).Select
            Sheets("обходной лист").Activate
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            ActiveWorkbook.Path & "/Обходной лист" & " (" & Sheets("Список уволенных ").Cells(i, 4).Value & ").pdf", Quality:= _
            xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=False
            End If
            Next       
End Sub
Изменено: vikttur - 24.08.2021 22:16:17
 
AnnaD543926, Что за ошибка? Из названия темы это понятно? Предложите новое название, из которого будет понятна проблема/задача - модераторы поменяют.
И вернитесь в своё сообщение и отформатируйте код при помощи кнопк <...>
 
Может такая тема будет лучше: Ошибка при запуске VBA: "Compile error: Next without for"
 
AnnaD543926, Вы не закрыли первый If, скорее всего.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Или ELSEIF упустили.
П,С, зачем два раза проверять одно и тоже?
 
V, Не совсем поняла про повторять 2 раза )))
В первом случае инфо подтягивает на лист  "обходной лист", а во втором случае на лист "Опись документов"

JayBhagavan, спасибо, да  все верно.
но тогда само назначение макроса - что бы он формировал pdf документы на всех у кого стоит признак "п" - не срабатывает.
не могу понять. что нужно поставить в конце, что бы он запускал алгоритм до тех пор пока по всем кто с признаком "п" не сформирует документы  :cry:
Сейчас он выглядит так:
Код
Sub CreateBonusCard()
Dim i As Integer, lastRow As Integer
    lastRow = Sheets("Список уволенных ").Cells(Rows.Count, 7).End(xlUp).Row
    For i = 7 To lastRow
If Sheets("Список уволенных ").Cells(i, 1).Value = "п" Then
With Sheets("обходной лист")
            .Range("B20").Value = Sheets("Список уволенных ").Cells(i, 4).Value
            .Range("D20").Value = Sheets("Список уволенных ").Cells(i, 6).Value
            .Range("B22").Value = Sheets("Список уволенных ").Cells(i, 5).Value
            End With
            If Sheets("Список уволенных ").Cells(i, 1).Value = "п" Then
With Sheets("Опись документов")
            .Range("B5").Value = Sheets("Список уволенных ").Cells(i, 4).Value
            .Range("B6").Value = Sheets("Список уволенных ").Cells(i, 5).Value
   End With
            Sheets(Array("обходной лист", "Опись документов")).Select
            Sheets("обходной лист").Activate
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            ActiveWorkbook.Path & "/Обходной лист" & " (" & Sheets("Список уволенных ").Cells(i, 4).Value & ").pdf", Quality:= _
            xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=False
            End If
            End If
Next
End Sub
 
Цитата
AnnaD543926 написал:
Не совсем поняла про повторять 2 раза
Код
If Sheets("Список уволенных ").Cells(i, 1).Value = "п" Then ' одна проверка
With Sheets("обходной лист")
            ....
            If Sheets("Список уволенных ").Cells(i, 1).Value = "п" Then ' вторая проверка такая же как первая.
With Sheets("Опись документов")

Возможно вторая не нужна.
Изменено: V - 24.08.2021 14:16:03
 
V,аааа, теперь поняла о чем Вы :D  
 
Цитата
AnnaD543926 написал:
"п" - не срабатывает.
подозреваю что последнюю заполненную нужно смотреть по первому столбцу.
Код
lastRow = Sheets("Список уволенных ").Cells(Rows.Count, 1).End(xlUp).Row
Изменено: V - 24.08.2021 14:19:18
 
Всем большое спасибо  :)
Все работает!
Хорошего дня!
Страницы: 1
Наверх