Код, возвращающий ошибку времени выполнения «1004» при прохождении каждого листа - PullRequest
0 голосов
/ 31 октября 2019

Я довольно плохо знаком с 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

Я ожидал, что код пройдет через все листы, но он запускает только первый лист

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...