Foro de Ayuda Excel | ||
| Soluciona tus problemas con Excel |
| | |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
| | LinkBack | Herramientas | Desplegado |
|
#1
| |||
| |||
| Mi primera pregunta es evidente, porque si no, no sirve seguir: ¿Se puede desde VBA escribir fórmulas complicadas tipo condicional?. Pienso que si. Cuando escribo (por ejemplo): Sheets("mihoja").Range("B20").Formula = "=2+2" desde VBA me aparece 4 en "mihoja"; pero mi problema es que quiero escribir una formula condicional en una celda determinada desde VBA. En ese caso me da error. Supongo que podrían ser las comillas; pero no se como escribirlo. Por ejemplo querría escribir en la celda B20: =SI('otrahoja'!A4='otrahoja'!I4;"Correcto";"Falso" ). Pero cuando escribo la sentencia parecida a antes: Sheets("mihoja").Range("B20").Formula = "=SI('otrahoja'!A4='otrahoja'!I4;"Correcto";"Falso ")" me da un error. Podría ser por las comillas; pero ¿como diferencio las comillas de principio y final de las que encierra a "Correcto" y "Falso"?. Asimismo, las que nos indica que quiero comparar a4 y I4 de "otrahoja" ¿están bien con la comilla simple?. Gracias por la ayuda. Última edición por ader fecha: 20/10/08 a las 17:37:59. |
|
#2
| |||
| |||
| He probado concatenando a unas constantes de texto pero me da igual. Hago R1="Correcto" y R2="Falso" y pongo entonces: Sheets("mihoja").Range("B20").Formula = "=SI('otrahoja'!A4='otrahoja'!I4;" &R1";" &R2")". Me sigue dando error de síntaxis o "se esperaba fin de sentencia". |
|
#3
| |||
| |||
| prueba con el objeto/propiedad worksheetfunction,esto es copiado de la ayuda de excel Se utiliza como contenedor de las funciones de hoja de cálculo de Microsoft Excel que pueden llamarse desde Visual Basic. Uso del objeto WorksheetFunction Utilice la propiedad WorksheetFunction para obtener el objeto WorksheetFunction. El siguiente ejemplo muestra el resultado de aplicar la función de hoja de cálculo Min al rango A1:A10. Set myRange = Worksheets("Sheet1").Range("A1:C10") answer = Application.WorksheetFunction.Min(myRange) MsgBox answer para ver las funciones en ingles,un truquillo.-consiste en grabar con "Doña Grabadora de macros" la funcion a emplear y luego sustituirla con worksheetfunction.nombre de la funcion
__________________ Salu2 ST |
|
#5
| |||
| |||
| Cita:
|
|
#6
| |||
| |||
| Cita:
|
|
#7
| |||
| |||
| Hola ader Como bien dices al escribir en VBA la sintaxis cambia, no obstante como te dice el compañero ST la utilización de la grabadora de macros te solucionará parte de estos problemas. Un saludo desde Vitoria |
|
#8
| |||
| |||
| Ahora cojo la fórmula que me dices, que me funciona, y le añado las dos constantes R1="Correcto" y R2="Falso" y me da un error de síntaxis en VBA. Lo pongo así: Sheets("mihoja").Range("B20").Formula = "=IF(otrahoja!$A4=otrahoja!$I4," &R1 "," &R2 ")" Si quiero ponerlo así es porque en la aplicación que estoy haciendo debe escribir una funcion distinta segun algun suceso. Luego debe admitir variables en la construcción. |
|
#9
| |||
| |||
| Cita:
|
|
#10
| |||
| |||
| Hola ader Pones Sheets("mihoja").Range("B20").Formula = "=IF(otrahoja!$A4=otrahoja!$I4," &R1 "," &R2 ")" deberías poner Sheets("mihoja").Range("B20").Formula = "=IF(otrahoja!$A4=otrahoja!$I4,""" & R1 & """","""" & R2 & """")" Las comillas suelen ser bastante pesadas. Un saludo desde Vitoria |
| Herramientas | |
| Desplegado | |
| |