Как добавить несколько листов? - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь добавить одну и ту же ячейку на несколько листов в одной книге.Несколько параметров:

  • Ячейка всегда будет одинаковой (A4)
  • Я не уверен, сколько листов у меня будет в месяц.
  • Этохранится в виде числа?

Я пытался найти это, и у него всегда была простая формула суммы.Я ищу специально написать функцию VBA для этого.

Function AddAcrossSheets(rng As Range) As Variant

    valRow = rng.Row
    valCol = rng.Column


    For x = 1 To Sheets.Count
        AddAcrossSheets = Sheets(x).Cells(valRow, valCol).Value + AddAcrossSheets
    Next x


End Function

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Помните, всегда добавляйте Option Explicit в самый верх вашего кода.Это заставит вас объявить все ваши переменные, что, в свою очередь, избавит вас от всевозможных неприятностей.

Вот как я бы это сделал

Sub addAcrossSheets()
Dim sht As Worksheet
Dim totalSum As Double
totalSum = 0 'initialize the sum
For Each sht In ThisWorkbook.Worksheets 'loop through the collection of worksheets
    totalSum = totalSum + sht.Range("A4") 'update the sum
Next sht
Debug.Print totalSum 'the result is displayed in your immediate window
End Sub

Теперь вы можете захотетьисключить некоторые листы из суммы.Вы можете сделать это так:

For Each sht In ThisWorkbook.Worksheets 'loop through the collection of worksheets
    If sht.Name <> "Something" And sht.Name <> "Something else" Then 'exclude worksheets from the sum
        totalSum = totalSum + sht.Range("A4") 'update the sum
    End If
Next sht
0 голосов
/ 05 июня 2019

Если это всегда одно и то же место (A4), вы можете просто ввести его жестко.

valueFromA4 = Cells(4, 1).Value

For i = 2 To Sheets.Count
    Sheets(i).Cells(4, 1).Value = valueFromA4
Next i

Я рекомендую использовать i в вашем цикле for, просто соглашение. Большинство циклов начинаются с i = 0, но в Excel Sheets начинаются со счетчика 1, поэтому лист после вашего первого листа будет 2.

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