EXCEL / VBA - динамически вставлять формулы в ячейки - PullRequest
0 голосов
/ 25 августа 2011

У меня есть таблица, а количество строк в ней неизвестно.Каждый раз, когда пользователь вводит элемент в столбец A этой таблицы, я хочу, чтобы другие столбцы в таблице динамически заполнялись формулами, которые ссылаются на элемент, только что введенный в столбец A.

Я не хочупросто скопировать формулу в столбцы B, C, D и т. д. на всем протяжении моего листа, потому что число строк в листе неизвестно.

Есть ли эффективный способ сделать это?

Мои попытки написания кода в событиях onCalculate и onChange в VBA кажутся очень неэффективными или приводят к вечным циклам.

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Если вы используете Excel 2007 или Excel 2010, определение диапазона списка как Список сделает это автоматически!
Лучший макрос - это не макрос

1 голос
/ 25 августа 2011

Вот пример, который будет заполнять пустые формулы в B, C и D всякий раз, когда ваш выбор изменяется:

В этой рабочей книге:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim oSh As Worksheet, oUsed As Range, oRng As Range

    Set oSh = Sh
    Set oUsed = oSh.UsedRange.Columns("B")

    'only add to blank formulas
    Set oRng = oUsed.Find("", LookIn:=xlFormulas)

    Do While Not oRng Is Nothing
        'B formula
        oRng.Offset(, 0).FormulaR1C1 = "=RC[-1] + 100"
        'C formula
        oRng.Offset(, 1).FormulaR1C1 = "=RC[-1] + 100"
        'D formula
        oRng.Offset(, 2).FormulaR1C1 = "=RC[-1] + 100"
        Set oRng = oUsed.Find("", oRng, xlFormulas)
    Loop
End Sub

Это работает на каждом листе в книге, поэтому вы можете проверить, на каком листе вы находитесь.

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