Admirado Experto: Tengo la siguiente duda. En varias hojas de un libro (50) tengo en la misma celda H22 un nombre distinto. Hay algunas hojas que en esa celda no hay nombre. ¿Se pueden ordenar alfabéticamente los nombres de esa celda en las diferentes hojas? Saludos de María Aurelia.
O sea que... Las hojas NO cambian de intentar, ¿los nombres en la celda H22 las puedo mover libremente?, por que no me envías tu archivo compreso a mi correo, saludos... Mauricio MbsARROBAinboxPUNTOnet
¡Hola Mauricio! Gracias por contestarme tan pronto. Tu interpretación es correcta, nombres ordenados alfabéticamente de la A-Z, pero me interesaría, en principio, que lo que se moviese fueran los nombres en H22 respetando las hojas. Los nombres son los que se ordenan y van ocupando su posición en las distintas H22 de las 50 hojas(supongo que hay que tener en cuenta que puede haber alguna sin nombre, te doy esta información por si importa a la hora de hallar una solución). Si esto no se puede hacer también me valdría que lo que se ordenase fuera las hojas según el nombre que aparezca en su H22 correspondientes. Venga, ayúdame, por favor, que tienes fama de ser un "Gran" conocedor de esta materia. Un beso de : María Aurelia
Haber si entendí, tienes 50 hojas, en cada hoja en la celda H22 hay un nombre, algunas están vacías, estos nombres los quieren ordenar alfabéticamente, supongo que de la A-Z, los nombres ni las celda se mueven, lo que se movería seria el orden de las hojas, ¿es correcto?, si es así solo confírmame y lo intentamos, sino, te agradecer si eres mucho más explicita.
Esta es la macro que hace lo que quieres, no se te olvide finalizar la pregunta, gracias... Option Explicit Public Sub OrdenarNombres() Dim co1 As Integer, co2 As Integer Dim NombreHoja As Integer Dim strHoja As String 'Mostramos mensaje en la barra de estado Application.StatusBar = "Ordenando, espere por favor..." 'Desactivamos la actualización en pantalla Application.ScreenUpdating = False 'Recorremos TODAS las hojas del libro For co1 = 1 To Worksheets.Count 'Obtenemos el nombre de la hoja, lo convertimos en valor 'para saber si es una hoja numerada NombreHoja = Val(Worksheets(co1).Name) If NombreHoja > 0 Then co2 = co2 + 1 'Guardamos el nombre de la hoja numerada wsUtil.Cells(co2, 1).Value = NombreHoja 'Guardamos el nombre del alumno wsUtil.Cells(co2, 2).Value = Worksheets(co1).Range("B3").Value 'Le cambiamos el nombre a la hoja para evitar errores al renumerar Worksheets(co1).Name = Format(NombreHoja) & "A" End If Next co1 'Reordenamos los nombres de los alumnos wsUtil.Cells(1, 2).Sort Key1:=wsUtil.Cells(1, 2), Order1:=xlAscending, Header:=xlGuess 'Recorremos todos los nombres de los alumnos For co1 = 1 To co2 'Obtenemos el nombre de la hoja strHoja = Format(wsUtil.Cells(co1, 1).Value) & "A" 'Movemos la hoja a la posicion correcta Worksheets(strHoja).Move After:=Worksheets(co1 + 1) 'Establecemos el nuevo numero del alumno Worksheets(strHoja).Range("A3").Value = co1 'Le cambiamos el nombre a la hoja para la numeracion Worksheets(strHoja).Name = co1 Next 'Borramos los datos de apoyo guardados wsUtil.Cells(1, 1).CurrentRegion.ClearContents 'Reactivamos la actualización en pantalla Application.ScreenUpdating = True 'Liberamos la barra de estado Application.StatusBar = False End Sub
Estimado Mauricio: He estado probando la macro, como todavía no puedo abrir el archivo original por el problema que te comenté, he abierto un libro nuevo y he tratado de reproducir la situación. Pero al ejecutarla me indica lo siguiente: "Error de compilación". "No se ha definido la variable". Y selecciona: wsUtil.Cells(co2, 1).Value = NombreHoja Yo he tratado de definir wsUtil como String y como Double pero sigue el error Primero: ¿Puedes decirme qué es y para que sirve el wsUtil? Segundo: ¿Este error es por no probarlo en el archivo original y si lo hiciese allí no saldría? Tercero: ¿Es qué falta algo en el código que me has enviado? De todas maneras ya sabes que te estoy profundamente agradecida por todo el tiempo que te estoy haciendo perder. Un beso muy fuerte de : Aurelia
WsUtil es el nombre de una hoja oculta que agregue a tu archivo, esta puede tener diversas utilidades, como el guardar información y ordenarla, lo cual podría hcaerse con código pero de esta forma es mucho más rapido y eficiente, prueba con el archivo que te envíe y me cuentas.
Admirado EXPERTO: Me queda otra duda. Tengo que reconstruir mi archivo, insertaría una hoja en blanco, cambiaría el nombre por wsUtil(esta hoja no tendría ninguna fórmula ni nada de código), iría a Propiedades de hoja y en visible cambiaría por 2-xlSeetVeryHidden. Pegaría en un módulo tu macro y ya está.Si estoy en lo cierto, hasta la próxima. Si no, haz el favor de comunicármelo por correo. He encontrado el archivo que me enviaste y tengo que decirte que funciona a la perfección. No me has defraudado, al contrario me has confirmado que en mi opinión, eres el mejor experto de la página. Si puedo hacer alguna cosa por ti me lo comunicas y si no mi más profundo agradecimiento de tu admiradora: Aurelia