Error con macro al poner fórmula en celda :(

josevaldesv

Board Regular
Joined
May 13, 2004
Messages
95
Cheers mates..
Estoy un poco perdido..
intento hacer lo siguiente, y no me sale...
Esta es toda mi macro... en fórmulas más chicas sí me ha salido...
La fórmula, una vez puesta, corre correctamente
lo que no corre es la macro

any suggestions?

Saludos...
jose valdes

Sub Place_formula_in_cell()
'I want this macro to place the formula
'=IF(IF(IF(K4>=$L$1,IF((DAYS360($L$1,K4))<=$L$1,DAYS360($L$1,K4),"nw"),"p")<=$L$1,IF(K4>$L$1,IF((DAYS360($L$1,K4))<=$L$1,DAYS360($L$1,K4),"nw"),"p"),"-")<>"-","start in "&IF(IF(K4>$L$1,IF((DAYS360($L$1,K4))<=$L$1,DAYS360($L$1,K4),"nw"),"p")<=$L$1,IF(K4>$L$1,IF((DAYS360($L$1,K4))<=$L$1,DAYS360($L$1,K4),"nw"),"p"),"0"),"")
'in cell R4
'but it says it can't
Range("R4").Select
ActiveCell.FormulaR1C1 = _
"=IF(IF(RC[-7]>=R1C12,IF((DAYS360(R1C12,RC[-7]))<=R1C12,DAYS360(R1C12,RC[-7]),""nw""),""p"")<=R1C12,IF(RC[-7]>R1C12,IF((DAYS360(R1C12,RC[-7]))<=R1C12,DAYS360(R1C12,RC[-7]),""nw""),""p""),""-"")<>""-"" ""start in "" RC[-7]>R1C12 (DAYS360(R1C12,RC[-7])) "
Range("R5").Select
End Sub
 

Excel Facts

Select a hidden cell
Somehide hide payroll data in column G? Press F5. Type G1. Enter. Look in formula bar while you arrow down through G.
Lo que deves hacer:

Ponga solamente esto (por ejemplo):

Range("R4").FormulaLocal = SE(E(A2=2;A3=3);"ROJO";"VERDE")

Esso hará com que la celda R4 contenga ROJO si los contenidos de las celdas A2 e A3 sean 2 e 3.
Caso tu version de Excel sea en INGLES cambie por

Range("R4").Formula = IF(AND(A2=2;A3=3);"ROJO";"VERDE")
 
Upvote 0
Yo soy un muy mal versado en VBA, pero trate muy duro de usar lo propuesto por Luiz, obteniendo solamente errores. Despues de tantear varias cosas, este codigo me funciono. (Perdonen que solamente tengo Excel en Ingles):

Code:
Sub Test()
  Range("B1").Select
  ActiveCell.Value = "Rojo"
  Range("B2").Select
  ActiveCell.Value = "Verde"
  Range("A4").Select
  ActiveCell.FormulaLocal = "=IF(AND(R2C1=2, R3C1=3),R1C2,R2C2)"
End Sub
En el codigo, la linea ActiveCell.FormulaLocal es mas larga, pues contiene el R1C1,R2C2)" que aparece como la penultima linea!

En cuanto a lo planateado por Jose, no entiendo las formulas. Quiza, si publicara de nuevo, con una formula mas sencilla, habria mas personas que tratarian de ayudarle?
 
Upvote 0
Bueno. segui tratando, y, al obseravar lo propuesto por Jose, trate:

Code:
Sub Test()
  Range("A4").FormulaLocal = "=if(and(r2c1=2,r3c1=3),""Rojo"",""Verde"")"
End Sub
y, funciono perfectamente!
===========================================
Tambien trate:
Sub Test2()
Range("A4").Select
ActiveCell.FormulaR1C1 = "=if(and(r2c1=2,r3c1=3),""Rojo"",""Verde"")"
End Sub
Y este codigo tambien trabajo igual que el anterior.

Creo que ahora lo que falta es que el amigo Jose nos de una formula mas simple que la original, porque la falla que yo tuve, Jose no la cometio.
 
Upvote 0
Una ultima observacion.

Al ejecutar el codigo para Sub Test2 anterior, si el cursor no esta en la posicion A4, al ejecutar la linea
Range("A4").Select
el cursor se coloca sobre A4, pero el movimiento invoca a otro Sub, el
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
de manera que, si ese Sub tiene algun codigo, ese codigo tambien sera ejecutado. Me parece que el metodo del Sub Text es mucho mejor que el de Sub Test2. Comentarios?
 
Upvote 0
Creo que ya era hora de regresar...

Veo que han pensado mucho en mi propuesta de problema, y he intentado aplicar las formulas que uds me dan, pero sigue sin servirme.. tengo errores al correr la macro.

Voy a facilitar la propuesta, con una fórmula diferente:

Sub Place_formula_in_cell()
Range("R4").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-7]>=R1C12,10,0)"
Range("R5").Select
End Sub

Esta fòrmula que puse SÍ SIRVE,
pero si pongo "=IF(RC[-7]>=R1C12,"tienes califiación de "&1,"reprobaste con "&0&" puntos")"

entonces lo que CREO que es el problema, es el uso de COMILLAS "" dentro de la fórmula...

alguna propuesta?
Lo de la logica de las formulas, no se preocupen, yo necesito todo eso para mi trabajo... yo no creo que se quieran meter en TODO eso, pues es algo complicado, jaja, pero si en vacaciones quieren tomar un tiempo extra. avisenme....

Gracias por el apoyo.. ciao
 
Upvote 0
Bueno, Jose, ya he experimentado con varias formas de tratar de resolver su problema. En cuanto al ultimo planteado por usted, yo trate esto:

Code:
Sub Test4()
  Range("A4").Value = "=IF(RC[-7]>=R1C12,""tienes califiación de ""&1,""reprobaste con ""&0&"" puntos"")"
End Sub
y tuve algunos problemas. Experimentando un poco, decidi que su RC[-7] significaba "la celda 7 columnas a la izquierda de A4", lo cual no tiene sentido, y lo cambie por RC[+5]. Entonces, la formula que aparece en A4 resulto ser:
=IF(F4>=L1,"tienes calificación de 1","reprobaste con 0 puntos"), y todo trabaja perfectamente.

Como ve, en mi ejemplo Test4, solamente se necesita una linea de codigo, y hasta se puede usar el ".Value" que use yo, que resulta un poco menos enredado y mas facil.

Como usted dijo, el problema en su ultimo ejemplo es question de doble comillas, como tengo en mi Sub Test4. Pero, tambien su RC[-7] creo que es un problema, no?

Su primera presentacion quiza funcionara correctamente si usa las doble comillas, "".
 
Upvote 0
José. Tengo que admitir que no tengo ni la menor idea que supuestamente debe hacer tal fórmula. Pero creo que lo que sigue lo hizo bien...

<font face=Courier New><SPAN style="color:#00007F">Sub</SPAN> Place_formula_in_cell()
    Range("R4").FormulaR1C1 = _
        "=IF(IF(IF(RC[-7]>=R1C12,IF((DAYS360(R1C12,RC[-7]))<=R1C12," & _
        "DAYS360(R1C12,RC[-7]),""nw""),""p"")<=R1C12,IF(RC[-7]>R1C12," & _
        "IF((DAYS360(R1C12,RC[-7]))<=R1C12,DAYS360(R1C12,RC[-7])" & _
        ",""nw""),""p""),""-"")<>""-"",""start in ""&" & _
        "IF(IF(RC[-7]>R1C12,IF((DAYS360(R1C12,RC[-7]))<=R1C12," & _
        "DAYS360(R1C12,RC[-7]),""nw""),""p"")<=R1C12," & _
        "IF(RC[-7]>R1C12,IF((DAYS360(R1C12,RC[-7]))<=R1C12," & _
        "DAYS360(R1C12,RC[-7]),""nw""),""p""),""0""),"""")"
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>
</FONT>

Celda R4 quedó con:
=IF(IF(IF(K4>=$L$1,IF((DAYS360($L$1,K4))<=$L$1,DAYS360($L$1,K4),"nw"),"p")<=$L$1,IF(K4>$L$1,IF((DAYS360($L$1,K4))<=$L$1,DAYS360($L$1,K4),"nw"),"p"),"-")<>"-","start in "&IF(IF(K4>$L$1,IF((DAYS360($L$1,K4))<=$L$1,DAYS360($L$1,K4),"nw"),"p")<=$L$1,IF(K4>$L$1,IF((DAYS360($L$1,K4))<=$L$1,DAYS360($L$1,K4),"nw"),"p"),"0"),"")

...que según la comparación que hice contra lo que usted escribió en su primera pregunta es la mismitita.

HTH
 
Upvote 0
Y para explicar un poco. Lo que hice fue copiar la fórmula que usted escribió en notación A1 y lo metí en la celda R4. Luego usando Tools | Options... | General | R1C1 reference style cambié Excel para que me mostrara la fórmula en notación R1C1. Copié la fórmula al Clipboard y hice un Paste en el VBE. Puse un " doble para cada " que aparace en la fórmula y púm, allá está.
 
Upvote 0
Ralph, lo de 7 celdas a la izquierda está bien, ya que comienzo en R4, pero tomando consejos, mejoré la fórmula.

Greg, si no se tiene el archivo completo, es casi imposible saber qué hace la fórmula (been working on it for quite a while), pero en resumen, mi único error era el no tener DOBLE COMILLAS.

Ya poniendo doble comillas en la macro, se arregló todo.

Ahora le quito el 70% de tamaño a todos mis archivos.. gracias por la paciencia, jaja, que estuvo divertido..
 
Upvote 0

Forum statistics

Threads
1,223,948
Messages
6,175,575
Members
452,652
Latest member
eduedu

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top