Вставить текст как формулу - PullRequest
1 голос
/ 15 июля 2011

Я создаю строку, которая является формулой.Как здесь (это более простой пример)
Если:

A1 is "Sum"
A2 is "D3"

Тогда B1 равен =Concatenate("=",A1,"(",A2,")")

Я хочу макрос VBA, который принимает результат формулы в B1 и вставьте в виде формулы в C1.

Мне нужно, чтобы C1 была формулой =SUM(D3)

Я думаю, что это включает PasteSpecial иоценить, но я не могу понять, как.

Я не хочу использовать функцию INDIRECT, потому что я хочу иметь возможность заполнять больше ячеек, чем формула и относительные ссылки внутри.

Ответы [ 3 ]

4 голосов
/ 15 июля 2011
with Activesheet
  .Range("C1").Formula = .Range("B1").Value
End With
0 голосов
/ 15 июля 2011

Я не знаю, хотите ли вы явно использовать командный макрос, но эта вещь кажется хорошим использованием UDF VBA. Если вы создаете UDF:

Function EvalFormula(f As String) As Variant
    EvalFormula = Application.Evaluate(f)
End Function

Тогда в C1 вы можете позвонить:

=EvalFormula(B1)

Запись этого как UDF устранит те неприятные ситуации, когда вы забыли запустить свой макрос, и теперь ваш лист не в порядке.

0 голосов
/ 15 июля 2011
ActiveSheet.Cells(2, 2).Value = ActiveSheet.Cells(1, 2).Value

Остальное можно отработать с того, что я бы предположил: -)

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