Macro Reemplazar Formula

05/07/2005 - 10:21 por mbergaretxe | Informe spam
Hola Grupo!

Sigo con el mismo problema después de haber probado las sugerencias que
me hacíais a mis preguntas. Detallo el problema:

Tengo la siguiente macro (reemplaza parte de una formula por una funcion
definida en una macro llamada AnguloARadianes):

If ActiveCell.HasFormula Then
If Not Selection.Find (What:="CALL(G2,",
After:=ActiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart,
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=Match_Case.Value) Is
Nothing Then
Selection.Replace What:="CALL(G2,",
Replacement:="AnguloARadiens(, LookAt:=xlPart, _
SearchOrder:=xlByRows,
MatchCase:=Match_Case.Value
End If

El caso es que reconoce que existe una formula en la celda que evaluo
pero no hace el reemplazo que le pido en ciertas celdas¿?

He intentando realizar el reemplazo desde el propio menú de Excel:

Buscar: "LLAMAR(G2;"
Reemplazar por: "AnguloARadianes("

Excel encuentra las ocurrencias de las celdas en las que aparece parte
del texto de formula que busco, pero al darle al botón Reemplazar, sale el
error "FUNCIÓN NO VÁLIDA" y no se produce el reemplazo (como en la macro,
pero en la macro no da error alguno).

Alguien me puede ayudar por favor????? Es urgente, llevo con el tema
meses y nada de nada.

Mil gracias de antemano. Mikel
 

Leer las respuestas

#1 KL
05/07/2005 - 11:27 | Informe spam
Hola Mikel,

Unas cuantas cosas:

1) Me temo, que si cambias de hilo para muchos sera dificil entender los
antecedentes a los que haces referncia :-)
2) Nunca has comentado si te ha funcionado el codigo que te di en el hilo
anterior y si no, que error obtienes.
3) Lo primero que salta a la vista es que tu macro usa el nombre
"AnguloARadiens" mientras que para la busqueda manual dices usar
"AnguloARadianes". Comprueba cual es el nombre verdadero de la funcion
personalizada.
4) Tambien parece que en la siguiente linea te has perdido unos cuantos
caracteres:

Replacement:="AnguloARadiens(, LookAt:=xlPart, _

que me imagino deberia ser algo asi:

Replacement:="AnguloARadiens(G2,", LookAt:=xlPart, _

y al final falta un 'End If'

5) Asimismo, si en el argumento Replacement estas omitiendo "G2,"
deliberadamente, piensa que el error puede deberse al numero incorrecto de
argumentos.
6) Ordenando un poco tu codigo, pienso que algo como lo siguiente deberia
funcionar siempre y cuando el nombre de la funcion personalizada sea
"AnguloARadiens" y el numero de argumentos de la misma sea igual al de la
funcion CALL:

Sub Test1()
With ActiveCell
If .HasFormula Then
If Not .Find( _
What:="CALL(G2,", _
after:=ActiveCell, _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=True) _
Is Nothing Then
.Replace _
What:="CALL(G2,", _
Replacement:="AnguloARadiens(G2,", _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=True
End If
End If
End With
End Sub

7) Tambien la parte codicional mas larga (la que detecta la presencia de la
cadena "CALL(G2,") creo que podria eliminarse por innecesaria:

Sub Test2()
If ActiveCell.HasFormula Then
ActiveCell.Replace _
What:="CALL(G2,", _
Replacement:="AnguloARadiens(G2,", _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False
End If
End Sub

8) Finalmente, si el numero de celdas no contiguas que contienen formulas en
tu hoja no supera 8000 (asi a ojo) tu codigo podria ser bastante mas rapido
si usaras la propiedad SpecialCells, algo asi:

Sub Test3()
Dim rng as Range
On Error Resume Next
Set rng = _
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
If rng Is Nothing Then Exit Sub
rng.Replace "CALL(G2,", "AnguloARadiens(G2,", , , False
End Sub

Saludos,
KL


"Mikel" wrote in message
news:
Hola Grupo!

Sigo con el mismo problema después de haber probado las sugerencias que
me hacíais a mis preguntas. Detallo el problema:

Tengo la siguiente macro (reemplaza parte de una formula por una funcion
definida en una macro llamada AnguloARadianes):

If ActiveCell.HasFormula Then
If Not Selection.Find (What:="CALL(G2,",
After:=ActiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart,
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=Match_Case.Value) Is
Nothing Then
Selection.Replace What:="CALL(G2,",
Replacement:="AnguloARadiens(, LookAt:=xlPart, _
SearchOrder:=xlByRows,
MatchCase:=Match_Case.Value
End If

El caso es que reconoce que existe una formula en la celda que evaluo
pero no hace el reemplazo que le pido en ciertas celdas¿?

He intentando realizar el reemplazo desde el propio menú de Excel:

Buscar: "LLAMAR(G2;"
Reemplazar por: "AnguloARadianes("

Excel encuentra las ocurrencias de las celdas en las que aparece parte
del texto de formula que busco, pero al darle al botón Reemplazar, sale el
error "FUNCIÓN NO VÁLIDA" y no se produce el reemplazo (como en la macro,
pero en la macro no da error alguno).

Alguien me puede ayudar por favor????? Es urgente, llevo con el tema
meses y nada de nada.

Mil gracias de antemano. Mikel


Preguntas similares