Imprimir página | Cerrar ventana

rellenar rango con nombres de hojas seleccionados

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86799
Fecha de impresión: 26/Marzo/2026 a las 17:28


Tema: rellenar rango con nombres de hojas seleccionados
Publicado por: acilu55
Asunto: rellenar rango con nombres de hojas seleccionados
Fecha de publicación: 17/Octubre/2023 a las 11:53
Buenos Dias a todos:
estoy intentando que 28 de las 31 tablas de un libro se reflejen en el rango a22: a22+nºdetablas-3)
y que las tres que no deben aparecer son aquellas cuyo nombre empieza por z, mi intento es ordenarlas y presentarlas en un rango con tres celdas menos  pero no lo logro, es mas me aparecen algunas duplicadas

este es mi código:

x = Sheets.Count - 3
For j = 3 To x + 1

Worksheets("zresumen").Range("A" & 19 + j).Value = Worksheets(j).Name
Next
With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A22:A" & 22 + x), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A22:A" & 19 + x)
        '.Header = xlYes
        .MatchCase = False
       '.Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Worksheets("zresumen").Range("A22:" & "A" & 22 + x).Select
Selection.Interior.Color = RGB(0, 255, 255)

'-----------------------------------------
y no me aparecen todos y los que aparecen no estan ordenados

¿Alguien me puede ayudar?



-------------
Gracias a todos de antemano



Respuestas:
Publicado por: lbauluz
Fecha de publicación: 17/Octubre/2023 a las 12:30
Mira a ver:
Solo cambia el nombre Hoja 1 por el que tu tengas.

Si quieres que salga en ptra posición cambia m=1 por la fila que quieras (en tu caso parece que 22).


Dim n As Long
Dim m As Long

    m = 1
    For n = 1 To Sheets.Count
        If Left(Worksheets(n).Name, 1) <> "z" Then
            Worksheets("hoja1").Range("A" & m).Value = Worksheets(n).Name
            m = m + 1
        End If
    Next n

Para ordenarlas, pon en marcha la grabadora de macros y haz un sort, luego el mismo código que te genere te vale.

Luis


-------------
El Búho es un pajarraco


Publicado por: acilu55
Fecha de publicación: 17/Octubre/2023 a las 12:51
muchas gracias:
El codifgo ha quedado asi, 
`primero pongo los nombres de las tablas
Dim n As Long
Dim m As Long

    m = 1
    For n = 1 To Sheets.Count
        If Left(Worksheets(n).Name, 1) <> "z" Then
            Worksheets("hoja1").Range("A" & m).Value = Worksheets(n).Name
            m = m + 1
        End If
    Next n
`segundo las ordeno alfabeticamenta

ActiveWorkbook.Worksheets("zresumen").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("zresumen").Sort.SortFields.Add Key:=Range("A22"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("zresumen").Sort
        .SetRange Range("A22:A50")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWindow.SmallScroll Down:=3


-------------
Gracias a todos de antemano


Publicado por: lbauluz
Fecha de publicación: 19/Octubre/2023 a las 08:32
¿Y te funciona así?

Un saludo.

Luis


-------------
El Búho es un pajarraco


Publicado por: acilu55
Fecha de publicación: 21/Febrero/2024 a las 19:17
si y perdon por no haber pedido que cerrarais el hilo, 

-------------
Gracias a todos de antemano



Imprimir página | Cerrar ventana