EXCEL VBA: создание простого цикла для повторения процесса для каждой строки

Я знаю, что это может показаться очень простым вопросом, но я пробовал разные методы для создания цикла, который будет делать то, что я ищу: в основном у меня есть лист excel с 4 столбцами (неизвестное количество строк), в котором я хочу введите данные. Эти данные затем отражаются на втором листе, который содержит «дизайн печати», который я использую для создания нескольких файлов PDF. Проблема в том, что я пробовал в течение 4 дней создавать петлю и ничего не добился!

Если вы можете мне помочь, это запись данных: SCREENSHOT

Public Sub InputData() Dim strCap As String strCap = Sheets("INPUT").Cells(4, 3).Value Label1.Caption = strCap Dim strCap2 As String strCap2 = Sheets("INPUT").Cells(4, 5).Value Label2.Caption = strCap2 If Sheets("INPUT").Cells(4, 4) = "OE" Then Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\OE_Logo.jpg") Else Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\SF_Logo.jpg") End If If Sheets("INPUT").Cells(4, 6) = "OE" Then Image2.Picture = LoadPicture(ActiveWorkbook.Path & "\OE_Logo.jpg") Else Image2.Picture = LoadPicture(ActiveWorkbook.Path & "\SF_Logo.jpg") End If Application.Calculate Call PrintPDF End Sub Sub PrintPDF() Dim pdfjob As Object Dim sPDFName As String Dim sPDFPath As String '/// Change the output file name here! /// sPDFName = "Affidavit" & " " & Sheets("INPUT").Cells(4, 3) & "_" & Sheets ("INPUT").Cells(4, 5) & ".pdf" sPDFPath = ActiveWorkbook.Path & Application.PathSeparator 'Check if worksheet is empty and exit if so If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub Set pdfjob = CreateObject("PDFCreator.clsPDFCreator") With pdfjob If .cStart("/NoProcessingAtStartup") = False Then MsgBox "Can't initialize PDFCreator.", vbCritical + _ vbOKOnly, "PrtPDFCreator" Exit Sub End If .cOption("UseAutosave") = 1 .cOption("UseAutosaveDirectory") = 1 .cOption("AutosaveDirectory") = sPDFPath .cOption("AutosaveFilename") = sPDFName .cOption("AutosaveFormat") = 0 ' 0 = PDF .cClearCache End With 'Print the document to PDF Sheets("AFFIDAVIT CREATOR").PrintOut Copies:=1, From:=1, To:=1, ActivePrinter:="PDFCreator" 'Wait until the print job has entered the print queue Do Until pdfjob.cCountOfPrintjobs = 1 DoEvents Loop pdfjob.cPrinterStop = False 'Wait until PDF creator is finished then release the objects Do Until pdfjob.cCountOfPrintjobs = 0 DoEvents Loop pdfjob.cClose Set pdfjob = Nothing End Sub 

Я действительно хочу создать One SINGLE PDF-файл для каждой строки, так что сделайте это для строк 4, 5, 6 и т. Д., Пока VBA не найдет пустую строку.

Любая помощь была бы высоко оценена, заранее спасибо за всю помощь, которую я смог найти в Stackoverflow и, надеюсь, поможет прийти!

Благодаря,

Янник

В общем, хороший способ создания цикла в VBA включает в себя следующие этапы:

  1. Определите диапазон ячеек, по которым вы хотите выполнить цикл
  2. Назначьте диапазон переменной (объявленной с Dim myRange as Range )
  3. Настройте цикл (ячейки, строки) диапазона с помощью петли следующим образом:
     Dim r as Range, myRange as Range
     Установите myRange = Range (Лист («INPUT»). Ячейки (4,4), Лист («INPUT»). Ячейки (4,4) .end (xlDown))
     Для каждого r в myRange.Cells
       turnRowIntoPdf r
     следующий

Это определит myRange как диапазон, который начинается в ячейке (4,4) – то есть D4 – и идет так далеко, как есть записи. Затем он будет перебирать каждую из этих ячеек поочередно (D4, D5, D6, …) и вызывать Sub turnRowIntoPdf с параметром r (который будет каждый из этих ячеек поочередно). Затем вы можете написать суб, который принимает этот параметр в качестве входных данных, и создает pdf-файл.

Думаешь, ты сможешь справиться с этим?

  • Excel: как использовать INDIRECT с такой формулой: {= MATCH (2,1 / (A1: A10 = "something"))}
  • запустить макрос несколькими листами с исключениями
  • Каков тип класса Row в Apache POI 2.5.1 jar?
  • BLANK ROW начиная с D7
  • python xlsxwriter записывает ячейку в соответствии с данными строки
  • копирование и вставка нескольких строк с использованием некоторого условия
  • Как заполнить некоторые строки Excel в JTable на Java?
  • Получить последнюю строку, но результат смещения в другой столбец
  • Выделять альтернативные строки, но не пробелы?
  • Код макроса VBA для выбора строки строки X ниже выбранной
  • Постоянно удалять пустые строки Apache POI с использованием JAVA в Excel Sheet
  • Interesting Posts

    Нужен более простой способ отображения этих данных без слияния ячеек

    Out of Memory создает электронные письма через excel vba

    Excel Find Replace Source в запросе рабочей книги

    Создание листа excel из html-таблиц с помощью jquery

    цикл в GAMS для генерации сценария в excel

    excel – обновлять несколько столбцов, если обновляется столбец с одного из листов

    Номер порта «mangle» при импорте CSV в Excel 2010

    Ошибка диапазона метода в теле отправки электронной почты с помощью vba

    Как математически извлекать миллисекунды, секунды и минуты из последовательной даты с помощью формулы Excel?

    Кто-нибудь знает лучшую альтернативу решениям MS Excel?

    Тип ADO VBA для SQL десятичного числа?

    Вставить именованный диапазон от Excel до Powerpoint в именованную форму – VBA

    Excel 2016 и MySQL: сбой инициализации источника данных

    Могу ли я установить seriescollection.values ​​таким образом, чтобы это была разница между массивом и диапазоном?

    Индексировать несколько столбцов и сопоставлять различные значения, возвращая список уникальных значений по столбцам

    Давайте будем гением компьютера.