Этот вопрос старый, но я столкнулся с немного другим решением этой проблемы, поэтому я поставлю его здесь для всех, у кого может быть эта проблема. Мой файл был настолько большим, что я не мог понять его конца. В конце была строка, в которой было всего 2 вещи вместо типичного 5 моего файла, поэтому, когда я попытался получить четвертый столбец, он дал мне эту ошибку. Вот мое решение:
for row in reader:
if len(row) > 2:
array.append(row[3])
Я предполагаю, что вы ищете что-то подобное:
Option Explicit
Public Sub SaveFile()
Dim x As Long
x = Application.InputBox(Prompt:="Enter the number of the Unit", Type:=1)
Dim c As Long
c = Application.InputBox(Prompt:="How many Racks are in the Unit", Type:=1)
Dim i As Long
For i = 1 to c
Cells(2, 4).Value = x & Format$(i, "00") & "01"
Cells(2, 6).Value = "RACK " & x & Format$(i, "00") & " /bal"
ActiveWorkbook.SaveAs Filename:="C:\Test\" & x & Format$(i, "00") & ".csv", FileFormat:=xlCSV
Next i
End Sub
Обратите внимание, что я использовал метод Application.InputBox вместо функции InputBox , потому что здесь Вы можете указать тип Type:=1
, который заставляет пользователя вводить число.
Также вам не нужно проверять i < 10
, вместо этого просто Format$(i, "00")
, чтобы обеспечить лидерство 0
на числах < 10
.
И вы можете использовать цикл For i = 1 to c
, который автоматически увеличивает i
на Next i
, поэтому вам не нужно увеличивать i = i + 1
.