VBA - выполнение цикла в каждом рабочем листе - PullRequest
0 голосов
/ 19 ноября 2018

Заранее спасибо за помощь; Я очень начинающий и ценю ваше время!

У меня есть сценарий VBA, который отлично выполняется в первой части (добавьте два столбца в каждый лист.

Однако вторая часть скрипта (суммирует итоги в новых столбцах, на каждом рабочем листе) выполняется только на первой вкладке, а не на других.

Я знаю, что это можно сделать, используя SUMIFs вместо VBA, но сейчас я изучаю VBA и должен это использовать.

Код ниже:

Sub test()
    Dim wb As Workbook: Set wb = ThisWorkbook
    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets(1)
    Dim ticker_name As String
    Dim ticker_total As Double
    Dim summary_table_Row As Double
    Dim i As Double

    ticker_total = 0
    summary_table_Row = 2

    For Each ws In wb.Worksheets
        'Create columns for ticker totals
        ws.Range("I1").Value = "Ticker"
        ws.Range("J1").Value = "Total Stock Volume"

        'Autofit to display data
        '  ws.Columns("A:J").AutoFit

        'THE SECTION BELOW IS THE ONE THAT WILL NOT LOOP THROUGH EACH TAB.
        '_________________________________________________________________

        'Do While IsEmpty(ws.Cells(i + 1, 1)) = True
        For i = 2 To 99999
            ' Check if we are still within the same credit card brand, if it is not...
            If ws.Cells(i + 1, 1).Value <> ws.Cells(i, 1).Value Then
              ' Set the Brand name
              ticker_name = ws.Cells(i, 1).Value

              ' Add to the Brand Total
              ticker_total = ticker_total + ws.Cells(i, 7).Value

              ' Print the Credit Card Brand in the Summary Table
              ws.Range("I" & summary_table_Row).Value = ticker_name

              ' Print the Brand Amount to the Summary Table
              ws.Range("J" & summary_table_Row).Value = ticker_total

              ' Add one to the summary table row
              summary_table_Row = summary_table_Row + 1

              ' Reset the Brand Total
              ticker_total = 0

            ' If the cell immediately following a row is the same brand...
            Else
              ' Add to the Brand Total
               ticker_total = ticker_total + ws.Cells(i, 7).Value
            End If
        Next i
        'Loop
    Next ws
End Sub
...