Я довольно плохо знаком с VBA и с трудом понимаю, почему мой код продолжает возвращать одну и ту же ошибку времени выполнения 1004. Наше задание - взять рабочую книгу с x количеством листов (за каждый год, который предоставляют наши данные)которые предоставляют все значения каждой акции каждый день в году, а затем распечатывают название тикера, ежегодное изменение, процентное изменение и общий объем.
Пока код выполняется для первого листа, но когдаон пытается перейти к следующему листу и выдает ошибку времени выполнения в строке If ws.Cells (row, 1) .Value <> ws.Cells (row + 1, 1) .Value Then
Я искал разные способы перебрать листы, но все равно получил то же самое.
Sub testing()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Range("I1").Value = "Ticker"
ws.Range("J1").Value = "Yearly Change"
ws.Range("K1").Value = "Percent Change"
ws.Range("L1").Value = "Total Stock Volume"
Dim ticker As String
Dim yearly_change As Double
yearly_change = 0
Dim opening As Double
Dim closing As Double
Dim row As Double
Dim counter As Double
counter = 2
For row = 2 To Rows.Count
If ws.Cells(row, 1).Value <> ws.Cells(row - 1, 1).Value Then
opening = ws.Cells(row, 3).Value
End If
If ws.Cells(row, 1).Value <> ws.Cells(row + 1, 1).Value Then
ticker = ws.Cells(row, 1).Value
closing = ws.Cells(row, 6).Value
yearly_change = closing - opening
total_stock_volume = total_stock_volume + Cells(row, 7).Value
ws.Range("I" & counter).Value = ticker
ws.Range("J" & counter).Value = yearly_change
ws.Range("K" & counter).Value = yearly_change / opening
ws.Range("K" & counter).NumberFormat = "0.00%"
ws.Range("L" & counter).Value = total_stock_volume
counter = counter + 1
total_stock_volume = 0
Else
total_stock_volume = total_stock_volume + ws.Cells(row, 7).Value
yearly_change = closing - opening
End If
Next row
Next ws
End Sub
Я ожидал, что код пройдет через все листы, но он запускает только первый лист