Я хочу заменить ввод x от пользователя на значение адреса ячейки, которое хранится в N2. Например, Cells(2, i+10) равно J2 Cell, в первом цикле в ячейке A2 это будет =J2^2, если пользователь написал x^2, а следующий цикл будет { {X6}}, если пользователь написал x^3 и так далее.

    numero_formulas = InputBox("¿Cuántas fórmulas vas a ingresar?")
    Sheets("ResultadosContinua").range("I6") = numero_formulas

    For i = 1 To numero_formulas

    N2 = Cells(2, i + 10)

    formula_user = InputBox("Escribe la fórmula:" & i & "")
    Cells(2, i).Select
    Sheets("ResultadosContinua").Select
    ActiveCell.Formula = "=" & Replace(formula_user, "x", " & N2 & ")
0
Maxwell 1 Мар 2016 в 01:32

2 ответа

Лучший ответ

Если вам нужен адрес N2 (4 столбца от активной ячейки), вам нужно использовать это:

numero_formulas = InputBox("¿Cuántas fórmulas vas a ingresar?")
Sheets("ResultadosContinua").Range("I6") = numero_formulas

For i = 1 To numero_formulas

n2 = Cells(2, i + 10)
formula_user = InputBox("Escribe la fórmula:" & i & "")
Cells(2, i).Select
Sheets("ResultadosContinua").Select
ActiveCell.Formula = "=" & Replace(formula_user, "x", ActiveCell.Offset(0, 4).Address(False, False))

Но, как я уже сказал, ваш код удалит формулу внутри ячейки N2 после 4-й итерации.

0
Elbert Villarreal 29 Фев 2016 в 22:58

Я бы посоветовал почитать о том, как избежать использования .Select согласно этот вопрос. Я также рекомендую использовать полное имя объекта, на который вы нацеливаетесь. т.е. Cells(2,10) = "Text" будет работать, но всегда лучше писать Cells(2,10).Value = "Text". Затем ваш код можно изменить, чтобы он читался:

Dim rngNumeroRange as Range
Dim intNumeroFormulas as Integer
Dim rngN2 as Range

Set rngNumeroRange = Sheets("ResultadosContinua").Range("I6")
intNumeroFormulas = InputBox("¿Cuántas fórmulas vas a ingresar?")
rngNumeroRange.Value = intNumeroFormulas 

For i = 1 To intNumeroFormulas 

    set rngN2 = Sheets("ResultadosContinua").Cells(2, i)

    formula_user = InputBox("Escribe la fórmula:" & i & "")
    rngN2.Formula = "=" & Replace(formula_user, "x", rngN2.Offset(0, 9).Address(False, False))

Next
0
Community 23 Май 2017 в 11:59