Excel insertar fórmula desde vba

Tengo una pequeña tabla en excel, en la que tengo fórmulas pero si las inserto de la manera que la tengo, al crear una nueva fila se desplaza y no modifica la fórmula para que siga calculando, sino que me sale error. Ahí va el código, no le puse al final la macro de insertar celda por que no se como solucionarlo aun. Espero me puedan ayudar. Saludos

Private Sub CommandButton1_Click()
'Empty TextBox
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""
TextBox11.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
'Desmarcar OptionButton
OptionButton1.Value = False
OptionButton2.Value = False
TextBox1.SetFocus
' guardar Macro
    ActiveWorkbook.Save
End Sub
Private Sub CommandButton2_Click()
Dim emptyRow As Long
'Make Calculo active
Set h2 = Sheets("Calculo")
h2.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) - 1
'Transfer information (peso3c2-talla4d2)
Cells(emptyRow, 1).Value = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value
Cells(emptyRow, 3).Value = TextBox3.Value
Cells(emptyRow, 4).Value = TextBox4.Value
Cells(emptyRow, 5).Value = "=c2/(d2^2)"
If OptionButton1.Value = True Then Cells(emptyRow, 6).Value = "1"
If OptionButton2.Value = True Then Cells(emptyRow, 6).Value = "2"
'Pliegues cutaneos(g2-02)
Cells(emptyRow, 7).Value = TextBox5.Value
Cells(emptyRow, 8).Value = TextBox6.Value
Cells(emptyRow, 9).Value = TextBox7.Value
Cells(emptyRow, 10).Value = TextBox8.Value
Cells(emptyRow, 11).Value = TextBox9.Value
Cells(emptyRow, 12).Value = TextBox10.Value
Cells(emptyRow, 13).Value = TextBox11.Value
Cells(emptyRow, 14).Value = TextBox12.Value
Cells(emptyRow, 15).Value = TextBox13.Value
Cells(emptyRow, 16).Value = "=h2+i2+j2+k2+l2+m2+n2"
If OptionButton1.Value = True Then Cells(emptyRow, 17).Value = "=(495/(1.112-(0.00043499*P2)+(0.00000055*P2*P2)-(0.00028826*B2))-450)"
If OptionButton2.Value = True Then Cells(emptyRow, 17).Value = "=(495/(1.097-(0.00046971*P2)+(0.00000056*P2*P2)-(0.00012828*B2))-450)"
'Empty TextBox
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""
TextBox11.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
'Desmarcar OptionButton
OptionButton1.Value = False
OptionButton2.Value = False
TextBox1.SetFocus
' guardar Macro
    ActiveWorkbook.Save
End Sub
Private Sub CommandButton3_Click()
End
End Sub
Respuesta

Si quieres insertar una fórmula en una celda, no puedes utilizar cells(f, c).value. Tienes que poner cells(f, c). Fórmula

3 respuestas más de otros expertos

Respuesta
1

No entiendo tu pregunta no ocupas otra macro para insertar filas dentro de la macro que ya tienes puedes hacerlo, mira la imagen conforme captura en los textbox y doy click en el botón 2 este lo manda a la siguiente fila vacía

y pot cierto modifique tu macro es demasiado código el que usas, no veo el problema con la fórmula, las inserta bien

Private Sub CommandButton1_Click()
'Empty TextBox
LIMPIAR_TEXTBOX
End Sub
Private Sub CommandButton2_Click()
Dim emptyRow As Long
'Make Calculo active
Set H2 = Sheets("Calculo")
H2.Activate
'Determine emptyRow
emptyRow = H2.Range("A1").CurrentRegion.Rows.Count
EMPTYCOL = H2.Range("A1").CurrentRegion.Columns.Count
If emptyRow = 1 And EMPTYCOL = 1 Then
    emptyRow = 1
Else
    emptyRow = emptyRow + 1
End If
'Transfer information (peso3c2-talla4d2)
For I = 1 To 4
    Cells(emptyRow, I).Value = UserForm1.Controls("TEXTBOX" & I).Value
Next I
Cells(emptyRow, 5).Formula = "=c1/(d1^1)"
If OptionButton1 Then Cells(emptyRow, 6).Value = "1"
If OptionButton2 Then Cells(emptyRow, 6).Value = "2"
For J = 7 To 15
    Cells(emptyRow, J).Value = UserForm1.Controls("TEXTBOX" & J - 2).Value
Next J
Cells(emptyRow, 16).Formula = "=h2+i2+j2+k2+l2+m2+n2"
If OptionButton1 = True Then Cells(emptyRow, 17).Formula = "=(495/(1.112-(0.00043499*P2)+(0.00000055*P2*P2)-(0.00028826*B2))-450)"
If OptionButton2 = True Then Cells(emptyRow, 17).Formula = "=(495/(1.097-(0.00046971*P2)+(0.00000056*P2*P2)-(0.00012828*B2))-450)"
'Empty TextBox
Cells(emptyRow, 1).CurrentRegion.EntireColumn.AutoFit
'LIMPIAR_TEXTBOX
End Sub
Private Sub CommandButton3_Click()
End
End Sub
Sub LIMPIAR_TEXTBOX()
For Each Control In UserForm1.Controls
    NOMBRE = UCase(TypeName(Control)) = "TEXTBOX"
    NOMBRE2 = UCase(TypeName(Control)) = "OPTIONBUTTON"
    If NOMBRE Then Control.Text = Empty
    If NOMBRE2 Then Control.Value = False
Next Control
TextBox1.SetFocus
' guardar Macro
    ActiveWorkbook.Save
End Sub
Respuesta

Dale una leidita a esto:

http://abrahamexcel.blogspot.com/2018/11/insertar-formulas-con-macros.html?m=1 

Saludos]

Abraham Valencia

Respuesta

Desde mi blog busca la entrada de Octubre:

 https://elsamatilde.blogspot.com/2018/10/colocar-formulas-mediante-vba.html 

Desde allí también tendrás acceso al video con los ejemplos.

Sdos.

Elsa

*Cyber-mes en manuales Excel

Te recuerdo que la consulta sigue abierta. Valora esta respuesta para darla por cerrada en mi historial.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas