Формула положить в ячейки с VBA без расчета - PullRequest
0 голосов
/ 02 февраля 2020

Поместите код, с которым я работаю, внизу.

Я пытаюсь ввести набор формул в диапазоне с кодом. Формулы вводятся правильно, но они рассчитываются только в том случае, если я нажму на каждую ячейку, нажму на поле с формулой и нажму клавишу ввода. , Дело не в том, что ячейки меняют формат, они остаются общими после запуска кода. Я в полном замешательстве.

Sub ButtonTest()
    Dim Number As Integer
    Number = Range("M2").Value
    Dim TestArray() As String
    ReDim TestArray(0, 1 To Number)
    Dim Values As Integer
    Dim RangeValues As Integer
    Dim Variable As Integer
    Variable = 3
    TestArray(0, 1) = "=1"

    For Values = 2 To Number
        TestArray(0, Values) = "=" & Cells(3, Variable).Address & "+1"
        Variable = Variable + 1
    Next Values

    Range("C3:" & Cells(3, Number + 2).Address).Formula = TestArray
    Application.Calculation = xlCalculationAutomatic
    ActiveSheet.EnableCalculation = True
    ActiveSheet.Calculate
End Sub

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

Для ввода формулы из массива используйте .FormulaArray вместо .Formula

Range("C3:" & Cells(3, Number + 2).Address).FormulaArray = TestArray
0 голосов
/ 02 февраля 2020

Не уверен, что я не прав, но у меня всегда было впечатление, что формулы не могут быть записаны в массив Range (как, например, со значениями). Я считаю, что вам нужно писать по одной ячейке за раз.

Может быть метод, который можно вызвать для преобразования значений массива в вычисляемые ячейки, но я не знаю об этом - буду рад услышать, если кто-нибудь может просветить меня, хотя.

Между тем, код ниже дает пример того, как ваш код может работать:

Dim iterationCount As Long, i As Long
Dim cell As Range

iterationCount = Sheet1.Range("M2").Value

Set cell = Sheet1.Range("C3")
cell.Formula = "=1"
For i = 1 To iterationCount
    cell.Offset(, 1).Formula = "=" & cell.Address & " + 1"
    Set cell = cell.Offset(, 1)
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...