У меня есть программа, которая предназначена для создания счета на основе данных в файле .csv. Сначала он работает как задумано, создавая счет для первой записи в .csv, но затем переходит к последней записи и затем по какой-то причине случайным образом выберет пустую ячейку в диапазоне 1 миллион. Это мой код для макроса «Следующая накладная», который, кажется, вызывает проблему:
Sub NextInvoiceShopOne()
Application.ScreenUpdating = False
Dim Invoice As String
Dim dDate As String
Dim ws As Worksheet
Dim sName As String
Range("I2").Value = Range("I2").Value + 1
Sheets("Payments").Select
ActiveCell.Offset(0, 3).Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(0, -3).Select
Selection.Copy
Sheets("Invoice").Select
Range("B15").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Данные, извлекаемые для макроса, сохраняются как таковые (в 2 разных файлах):
<vendor name>, <vendor sku>, <item name>, <item type (always constant)>, <quantity sold>, <total cost>, <default vendor price>
(будем называть этот файл платежами)
и
<vendor>, <address>, <city>, <state>, <zip code>, <email>
(давайте назовем это одним вендором)
Предполагается, что отчет извлекает информацию о поставщике из файла платежей, сопоставляет ее с некоторыми данными в файле поставщиков и выводит результаты на экран.
Но я действительно хочу знать, почему обрабатываются только первые и последние записи файла платежей, затем он пропускает пустые ячейки.
EDIT
Немного изменил код, чтобы исправить проблему выбора пустых ячеек
Sub NextInvoiceShopOne()
Application.ScreenUpdating = False
Dim Invoice As String
Dim dDate As String
Dim ws As Worksheet
Dim sName As String
Range("I2").Value = Range("I2").Value + 1
Sheets("Payments").Select
ActiveCell.Offset(0, 3).Select
Range(Range("A5"), Range("G5").End(xlDown)).Select
Do Until IsEmpty(ActiveCell.Offset(1, 0))
ActiveCell.Offset(1, 0).Select
Loop
Selection.Copy
Sheets("Invoice").Select
Range("B15").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub