Visual Basic para Aplicaciones - Problema para cambiar el valor de un rango en un ciclo

Life is soft - evento anual de software empresarial
 
Vista:

Problema para cambiar el valor de un rango en un ciclo

Publicado por Enrique (3 intervenciones) el 30/11/2019 19:06:27
Hola a todos. Necesito ayuda urgente.
En la siguiente macro necesito que el rango seleccionado denominado "rango" vaya cambiando de valor desplazandose hacia abajo en cada iteración del ciclo (loop).
Al parecer la función de ordenar horizontalmente requiere el nombre de Rango, por lo tanto necesito que el valor de "rango" vaya cambiando en cada repetición del ciclo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub RecorreOrdenaRango()
 
Dim rango As Range
 
Range("b1:c1").Name = "rango"
Range("rango").Select
 
'--> repetir hasta que la selección esté vacía
 Do Until ActiveCell.Value = ""
 
     '--> ordena las celdas seleccionadas horizontalmente
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add2 Key:=Range("rango"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SetRange Range("rango")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
 
    ==> ACÁ NECESITO QUE EL VALOR DE "rango" CAMBIE Y SEA IGUAL AL RANGO ORIGINAL
           PERO DESPLAZADO UNA FILA HACIA ABAJO
 
 Loop
 
End Sub

Se agradece de antemano cualquier ayuda.
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

Problema para cambiar el valor de un rango en un ciclo

Publicado por JuanC (565 intervenciones) el 01/12/2019 12:23:14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub RecorreOrdenaRango2()
Dim r As Range
Dim ws As Worksheet
 
Set ws = ActiveWorkbook.Worksheets("Hoja1")
Set r = Range("b1:c1")
r.Select
 
Do Until ActiveCell.Value = VBA.vbNullString
    With ws.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=r, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange r
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
 
    Set r = r.Offset(1)
    r.Select
 Loop
End Sub
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

Problema para cambiar el valor de un rango en un ciclo

Publicado por Enrique (3 intervenciones) el 01/12/2019 22:10:39
Muchísimas gracias!

Funcionó a la perfección, y el script queda mucho más limpio.

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