Foro de Ayuda Excel | ||
| Soluciona tus problemas con Excel |
|
#1
| |||
| |||
| Hola a todos...tengo una duda con una macro y me gustaria que me pudieran ayudar, les cuento...tengo un libro en excel 2003 generado a traves de un software, este libro puede estar dividido en 10 hojas como en 100 dependiendo de la cantidad de dias que el usuario quiera visualizar, el nombre de las hojas tienen el siguiente formato, ejemplo: martes, 24 de junio de 2008, cada hoja tiene una serie de datos con los que hay que trabajar, sacar la diferencia de un dia con el otro, el promedio y otras acciones, lo que he echo hasta el momento es contar la cantidad de hojas existentes, crear una nueva hoja y listar los nombres de las hoja con un hipervinculo a su hoja correspondiente, todo esto esta en la hoja nueva...pero lo malo es que no me vincula ya que el nombre de la hoja tiene espacios entre cada palabra y son muchas hojas como para editar los nombres uno por uno antes de ejecutar la macro, despues de esto debo mostrar los resultados de las operaciones en la hoja nueva al lado de su vinculo...aqui les dejo el codigo: Option Explicit Sub crear_libro() Dim vbynSep Dim numero_de_hojas Dim startPos As Long 'Pasamos el dato a una variable numero_de_hojas = Sheets.Count ' Mostramos un mensaje en pantalla MsgBox "Este libro contiene " & numero_de_hojas & " hoja(s)." vbynSep = MsgBox(prompt:="Desea crear una NUEVA HOJA para el calculo de lecturas?", Buttons:=vbYesNo) If vbynSep = vbYes Then Worksheets.Add On Error Resume Next With ActiveSheet .Move Before:=Sheets(1) .Name = "Calculo" With Range("B1") .Value = "Calculo Lecturas" .Font.Size = 12 .Font.Bold = True .Font.Underline = xlUnderlineStyleSingle End With End With On Error GoTo 0 startPos = 2 Else startPos = 0 End If Call insertar_indice(ByVal startPos) End Sub Sub insertar_indice(ByVal startPos) Dim wksHoja As Worksheet Dim nrFila As Long nrFila = startPos For Each wksHoja In Worksheets If wksHoja.Name <> ActiveSheet.Name Then nrFila = nrFila + 1 ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(nrFila, 1), Address:="", _ SubAddress:=wksHoja.Name & "!A2", TextToDisplay:=wksHoja.Name End If Next Columns("A:A").EntireColumn.AutoFit Columns("B:B").EntireColumn.AutoFit End Sub |
|
#2
| |||
| |||
| Si el problema es el nombre de las hojas, haz una macro que cambie el nombre de cada hoja a tu acomodo por ejemplo remplazando los espacios por _ y si son muy largos te inventas un formato de nombre adecuado pej: si el nombre es: martes, 16 de enero de 2009 podria poner: M160109, ¿cómo?, pues creas una funcion que trabaje con cadenas, las funciones ( de VBA) claves son: instr y mid. un saludo y mucha suerte cualquier duda tratare de resolverla. Prueba esto, tienes que modificarlo... Sub cambioN() Dim WS As Worksheet Dim OldName As String For Each WS In ThisWorkbook.Worksheets On Error Resume Next OldName = WS.Name OldName = OldName WS.Name = CambiaNombre(OldName) If Err Then MsgBox Err.Description Err.Clear End If Next WS End Sub Function CambiaNombre(namestr As String) As String CambiaNombre = Replace(namestr, "Sheet", "Hoja_") End Function Última edición por Efasor fecha: 25/06/08 a las 05:52:43. |
|
#5
| |||
| |||
| Cita:
Te aclaro que lo que hace es cambiar el nombre de las Hojas, asi que lo debes ejecutar antes del tuyo o por ejemplo en tú macro puedes porner Código: call CambioN() Debes modificar la forma en que quedan los nombres ya que este es solo un ejemplo Código: CambiaNombre(cadena) |
|
#6
| |||
| |||
| hola necesito ayuda!!!!!! tengo dos combobox en uno necesito cargar las areas que se encuentran en mi hoja 1, y empiezan en D3 y necesito que me desplieguen esas el problema es que se repiten muchas veces y necesito ke solo paraescan una sola vez cada una y cuando seleccione una de esas areas me mande todos los usuarios que estan en esa area y eso me lo tiene que desplegar en el otro combo seria asi ams o menos combobox5 "FIN "HRS" "IND" "MGT" "MIS" "PJT" "PUR" "QUA" "RIE" "RSD" "SLS" combobox6 deben aparecer los nombres segun se seleccione el area de arriba y cada usuario que se vaya seleccionando lo debe mandar a un listbox. esto lo hago desde un userform que va dirigido a mi hoja 3 y cuando se seleccione los n usuarios pues todos los datos de estos usuarios que se seleccionaron deben aparecer en mi hoja tres. los nombres de los usuarios y el area estan en mi hoja 1 espero me puedan ayudar |
|
#7
| |||
| |||
| Oscar por favor lee la respuesta del mensaje privado que me enviaste,asi como la sugerencia del 'otro post (este)
__________________ Salu2 ST Última edición por ST_ fecha: 02/10/08 a las 17:21:58. |
| Herramientas | |
| Desplegado | |
| |