Excel - Ayuda Excel

 
Vista:

Ayuda Excel

Publicado por Elbvert Villarreal (4 intervenciones) el 20/12/2006 15:31:01
Mi nombre es Elbert, soy de Costa Rica y tengo algunos problemas para generar algunas macros en Excel, motivo por el cual les escribo esperando me puedas ayudar.

Paso seguido les explico la situación y mi problema: Hice una macro en donde busco y reemplazo datos determinados en la hoja de Excel, (Cells.Replace) pero siempre que lo ejecuto cambia los valores en la misma hoja, mas no en todo el libro y es lo que busco, pensé en agrupar las hojas, pero aun no lo logro.
Este es el codigo:
Coloco un boton en la hoja "Sheet1" y le asigno este codigo.

Private Sub cambioval_Click()
'Trato de agrupar las hojas del libro pero sin exito, en la ejecución del reemplazo de
'los datos.

Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
Sheets("Sheet1").Activate
'si ejecutara esta funcion en Excel, usando la funcion Find and Replace, preciono
'options y me aparece una variable, "Within : (aqui escojo entre "Sheet" ó "Workbook"
'Pero no se como asignar este valor a Cells.replace.

Cells.Replace What:="Prueba", _
Replacement:="Listo", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.CutCopyMode = False
'Desagrupo las hojas y seleciono la hoja primera donde yo estaba trabajando.
Sheets("Sheet1").Select
Range("D15").Select
a = MsgBox("Cambios aplicados exitosamente!", 0 + 0 + 64, "Cambios realizados")

End Sub


Como ven el las tres hojas escribí la palabra prueba, y quiero cambiarla en las tres hojas, pero siempre que ejecuto la macro solo lo hace en la hoja1.

Espero que alguien me pueda ayudar con mi problema.
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:Ayuda Excel

Publicado por Dante (28 intervenciones) el 20/12/2006 17:25:14
Quita la matriz y usa un bucle del tipo:

For Each hoja In ThisWorkbook.Worksheets
......
Next hoja
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:Ayuda Excel

Publicado por Elbert Villarreal (4 intervenciones) el 20/12/2006 17:45:42
Creo que omiti parte de la info, porque necesito cambiar los datos en 2 de 3 hojas en mi ejemplo. Y el codigo de ejemplo que envie, las hojas se llaman de forma similar pero en el workbook en mi trabajo uso cerca de 50 hojas y todas tienen nombres de paices y localidades por lo que el nombre de las hojas no es ni parecido. Y ademas quiero cambiar los nombres de algunas de las hojas del libro no de todas.
Disculpa Dante, pero podrias ser un poco mas especifico, y debes saber que agradezco grandemente tu atencion.
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:Ayuda Excel

Publicado por Dante (28 intervenciones) el 20/12/2006 18:16:30
En este caso "hoja" es una variable y no importa el nombre ni cuantas hojas son para que se ejecute, prueba el siguiente codigo:

For Each hoja In ThisWorkbook.Worksheets
msgbox hoja.name
Next hoja

te mostrara en un msgbox el nombre de cada una de las hojas del libro que tengas abierto, ok, entonces en lugar de msgbox tu colocarás las instrucciones que necesites hacer en cada una de esas hojas, pero tienes que quitar la matriz donde seleccionas todas las hojas.
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:Ayuda Excel

Publicado por Elbert Villarreal (4 intervenciones) el 20/12/2006 20:35:24
Private Sub RepVal_Click()
Respuesta = MsgBox("Realmente desea cambiar los valores actuales por los del TT " _
& Range("aF172").Value & "" & TextBox4.Value & "-" & TextBox5.Value & "-" & TextBox6.Value & ".xls? Valores erroneos pueden resultar en perdida irreparable de informacion", 3 + 256 + 48, "Advertencia")

If Respuesta = 6 Then
For Each hoja In ThisWorkbook.Worksheets
Cells.Replace What:=Range("ac170").Value, _
Replacement:=Range("ac171").Value, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
HOJA.NAME
Next hoja

Range("D15").Select
a = MsgBox("Cambios aplicados exitosamente!", 0 + 0 + 64, "Cambios realizados")

If a = 1 Then
UserForm1.Hide
Else
UserForm1.Hide
End If

Else
b = MsgBox("No se realizó ningún cambio", 0 + 0 + 16, "Fallido")
UserForm1.Hide
End If

End Sub

Lo que puse arriba es el codigo de la hoja y me da este error: "run-time error '438': Object doesn't support tjis property or method" hice lo que me dijiste en el ejemplo, para hacer una prueba, y si en realidad me da un msgbox en donde me devuelve el nombre de cada una de las hojas del libro que tengo abierto, pero en este codigo no se donde colocar "hoja.name" que arriba te lo pongo en mayusculas para que se note. Por favor necesito ayuda con esto.
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:Ayuda Excel

Publicado por Dante (28 intervenciones) el 20/12/2006 21:02:46
No tienes que poner hoja.Name por ningún lado, en todo caso se lo debes poner a Cells, hoja.Cells.Replace.
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:Ayuda Excel

Publicado por Elbert Villarreal (4 intervenciones) el 20/12/2006 21:09:10
Dante vos sos un mostro!!!!! Increible. Muchas Gracias!!!!! Me funciona que da miedo!!! Otra vez Gracias llevo semanas tratando de perfeccionar eso y no podia, Muchas Gracias!!!!
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:Ayuda Excel

Publicado por Dante (28 intervenciones) el 20/12/2006 21:39:45
Fue un placer ayudarte.Saludos
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