La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Excel/672163-Convertir-cadena-a-formula-automaticamente.html

Convertir cadena a formula automaticamente

Convertir cadena a formula automaticamente

Publicado por Laura (4 intervenciones) el 05/08/2006 11:25:18
Quiero que al meter en una celda la cadena de caracteres "SUMA(B:B)" automaticamente me añada en esa celda el "=" para convertir la cadena de caracteres "SUMA(B:B)" en la formula "=SUMA(B:B)"

He creado un macro sencillito que hace lo que quiero pero yo quiero que lo haga siempre y automaticamente cada vez que se introduzca algo en las celdas y sin tener que dar al boton de la mi macro que me añada el "=" al principio de la cadena que meta en la celda equis.

Private Sub ConvertirCadenaAFormula_Click()
Dim CadenaCelda as String
Dim ConvertidaAFormula as String

CadenaCelda = Cells(1,1).Value
ConvertidaAFormula = "=" & CadenaCelda
Cells(1,1).Formula = ConvertidaAFormula
End Sub

RE:Convertir cadena a formula automaticamente

Publicado por JuanC (792 intervenciones) el 05/08/2006 20:59:11
Creo que lo conveniente es asignarle una combinación de teclas a la macro
y llamarla sólo cuando haga falta, pues no siempre que escribas en una
celda ingresarás una fórmula.

Para asignar una combinación de teclas:
Herramientas>>Macro>>Macros...>>Opciones...

También puedes hacerlo mediante el método
Application.OnKey

Hice un pequeño cambio en el código

Public Sub ConvertirCadenaAFormula()
On Error Resume Next
With ActiveCell
.FormulaLocal = "=" & .Value
End With
End Sub

Saludos desde Baires, JuanC
Imágen de perfil de Abraham Valencia

RE:Convertir cadena a formula automaticamente

Publicado por Abraham Valencia (2415 intervenciones) el 06/08/2006 01:18:59
Yo lo haria asi:

Private Sub worksheet_change(ByVal target As Range)
Dim CadenaCelda As String
Dim ConvertidaAFormula As String
Application.EnableEvents = False
CadenaCelda = Cells(1, 1).Value
ConvertidaAFormula = "=" & CadenaCelda
Cells(1, 1).Formula = ConvertidaAFormula
Application.EnableEvents = True
End Sub

Pero, mil disculpas por la duda, pero, estas segura que cuando pones SUMA, te crea una formula????? Se supone que solo debe hacerlo si pusieras SUM, o en lugar de SI, IF y asi, todo en ingles.

Abraham

RE:Convertir cadena a formula automaticamente

Publicado por Laura (4 intervenciones) el 06/08/2006 03:32:56
JuanC, necesito que sea siempre y en todo momento automatico, sin tener que presionar tecla alguna ya que esas cadenas a convertir por el Excel son enviadas desde otra aplicacion que estoy haciendo en Visual-C y por cuestiones de comodidad la aplicacion en Visual-C la estoy diseñando para que no envie la cadena exacatamente como luego quiero que se convierta luego en la hoja Excel.

Abraham a dado con la formula correcta y yo ya habia dado con ella ayer 5 horas despues de preguntarlo, lenta pero segura jejeje. Ee que me puse cabezona y lei y lei hasta que me encontre con worksheet_change que es exactamente lo que buscaba. Gracias Abraham y JuanC.

Por cierto, a tu pregunta Abraham, a ver si he entendido bien; mi Excel esta completamente traducida al Español, incluida las funciones estandar que trae, asi "=Suma(B:B)" suma toda la columna B... vamos las tengo todas traducidas, tales como "Promedio" "Moda" "BUSCARV" "Contar" "Indice" "Raiz" etc. etc.

SUM vs. SUMA

Publicado por JuanC (792 intervenciones) el 06/08/2006 15:21:45
Me sumo a la cuestión SUM vs. SUMA
Desde una macro puede ser

[A1].FormulaLocal = "=suma(b1:c1)" <==> [A1].Formula = "=sum(b1:c1)"

Saludos, JuanC
Imágen de perfil de Abraham Valencia

RE:Convertir cadena a formula automaticamente

Publicado por Abraham Valencia (2415 intervenciones) el 06/08/2006 03:58:22
Hola Laura, que bueno que tu problema este resuelto. Mi pregunta iba hacia que, asi el excel este en Español (como es mi caso tambien), al pegar formulas en una celda mediante una macro, se supone que uno debe hacerlo en ingles. Como tu caso, por ejm, si con la macro que te envie yo pongo suma(a2:a5) me lo convierte en un error, en cambio si pongo sum(a2:a5) me lo pasa a =suma(a2:a5)

Como te digo, se supone que siempre es asi, por eso mi extrañeza. Prueba con otras funciones y nos cuentas.

Abraham

RE:Convertir cadena a formula automaticamente

Publicado por Laura (4 intervenciones) el 06/08/2006 10:50:07
Pues no lo he probado con macro, pero metiendo a mano directamente en una celda "=sum(B:B)" me devuelve error... no te puedo asegurar que desde una macro si funcione SUM y no funcione SUMA... pero me pareceria muy muy raro que desde macros SUM funcionara y SUMA no. ¿A ti directamente a mano en celda te va "=sum(B:B)"?

RE:Convertir cadena a formula automaticamente

Publicado por Laura (4 intervenciones) el 06/08/2006 11:11:10
Pues vaya, Abraham, tienes razon, desde macro no funciona SUMA y si SUM. Alucino... que curioso, jejeje. Pero bueno, en parte puede ser comprensible, ya que la parte del Visual Basic no la han traducido, solo la parte menos avanzada y que mas usuarios usaran... De todas formas, el tema SUMA era un ejemplo, realmente la conversion esta ni la quiero para formulas ni para añadir realmente el "=", solo era un sencillo ejemplo para que se entienda facilmente y encontrar lo que buscaba el "worksheet_change", jejeje

Gracias!