Excel - punto y coma en replace

 
Vista:

punto y coma en replace

Publicado por andres (4 intervenciones) el 01/02/2008 11:17:02
Hola,
estoy usando en una macro de Excel la siguiente función para reemplazar parte de fórmulas que tiene la Excel:

Selection.Replace What:=texto1, Replacement:=texto2, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Siempre me funciona correctamente excepto si dentro de la parte de las formulas que quiero reemplazar hay un punto y coma.
En cambio si reemplaza un punto y coma si lo que hay en la celda es texto y no una formula.
¿Hay alguna forma de hacer que funcione dentro de las formulas?.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:punto y coma en replace

Publicado por JuanC (792 intervenciones) el 01/02/2008 12:04:00
quizá el problema radica en que el ; se usa para separar argumentos
de la función
pon un ejemplo completo de lo que no funciona...

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:punto y coma en replace

Publicado por andres (4 intervenciones) el 01/02/2008 12:11:37
Te envío uno que funciona (no lleva punto y coma) y otro que no:

Este me cambia la refencia a una celda dentro de una fórmula sin problemas:

Selection.Replace What:="!$B$255", Replacement:="!$B$7", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

En este quiero cambiar además de la referencia, la formula or por un and, y no funciona:

Selection.Replace What:="!$B$255;O", Replacement:="!$B$7;Y", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Muchas gracias por tu ayuda!!!!!!!!!!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:punto y coma en replace

Publicado por JuanC (792 intervenciones) el 01/02/2008 12:50:23
probá con
Selection.FormulaLocal = Replace(Selection.FormulaLocal, "!$B$255;O", "!$B$7;Y")

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:punto y coma en replace

Publicado por andres (4 intervenciones) el 01/02/2008 13:18:10
Hola, tiene una pinta buenisima porque se ajusta 100% a lo que quiero hacer (reemplazar masivamente en muchas, muchisimas Excels una formula por otra). Por alguna razón me da un problema de "no coinciden los tipos). Te paso todo el código por si ves que me estoy equivocando en el select de las celdas:

For Each wk In Workbooks
wk.Activate
For Each sh In Worksheets
sh.Activate
sh.UsedRange.Select
Selection.FormulaLocal = Replace(Selection.FormulaLocal, "!$B$255;O", "!$B$7;Y")

Next
Next

Me da el mismo error si intento que me escriba para ver lo que está trayendo el selection.formulalocal:

Formula = Selection.FormulaLocal
MsgBox (Formula) ' aqui da error de no coinciden los tipos

Muchisimas gracias de nuevo por tu ayuda
(¿Dónde está Baires????. Perdón por la incultura general)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:punto y coma en replace

Publicado por JuanC (792 intervenciones) el 01/02/2008 13:28:00
For Each wk In Workbooks
wk.Activate
For Each sh In Worksheets
sh.Activate
For Each cell In sh.UsedRange
cell.FormulaLocal = Replace(cell.FormulaLocal, "!$B$255;O", "!$B$7;Y")
Next
Next
Next

Saludos desde Baires (Buenos Aires - Argentina), JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:punto y coma en replace

Publicado por andres (4 intervenciones) el 01/02/2008 14:20:05
¡¡¡¡¡¡¡¡¡¡¡Lo Conseguí!!!!!!!! Muchisismas gracias.
El único problema que tenía ahora es que con el código que me enviabas tal cual el rendimiento era malo (olvidé decir que hablabamos de Excels muy pesadas), ir celda a celda era inpensable.
Lo resolví usando un find (sin punto y coma) y después el replace formulalocal que me envias:

Sub reemplazar()
Dim sh As Worksheet

For Each wk In Workbooks
wk.Activate
For Each sh In Worksheets
sh.Activate
sh.UsedRange.Select
Set RangeObj = Cells.Find(What:="!$B$255", After:=ActiveCell, _
LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False)
If RangeObj Is Nothing Then
Else
RangeObj.Select
ActiveCell.FormulaLocal = Replace(ActiveCell.FormulaLocal, "!$B$255;O", "!$B$7;Y")
End If
Next
Next
End Sub

Muchas gracias por tu ayuda! Te debo un café!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar