Macro para ordenar (sort)

08/10/2007 - 21:51 por Manny_90 | Informe spam
Que tal
El codigo de abajo lo hice para sortear informacion de la colmna A, pero me
sale un error "Object does not support this property or method".
Lo que hace la macro es buscar dos celdas en en particular, la macro lo hace
pero cuando tiene que sortear todo el rango es cuando me sale ese error.

Me podrian ayudar..



Private Sub()

INICIO = ActiveCell.Address
FIN = ActiveCell.Address
Range(INICIO, FIN).Select
ActiveWorkbook.Worksheets("Basededatos").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Basededatos").Sort.SortFields.Add Key:=Range( _
INICIO, FIN), SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Basededatos").Sort
.SetRange Range(INICIO, FIN)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With


Gracias
 

Leer las respuestas

#1 Héctor Miguel
09/10/2007 - 03:42 | Informe spam
hola, !

El codigo... lo hice para sortear informacion de la colmna A, pero me sale un error "Object does not support this property or method".
Lo que hace la macro es buscar dos celdas en particular... pero cuando tiene que sortear todo el rango... sale ese error.



1) aplicar un .Sort a objetos NO rango (explicitamente) es una caracteristica agregada al metodo en la version 2007

2) ese mensaje de error significa que (probablemente) estas ejecutando la macro en una version anterior a 2007

3) si lo unico que necesitas es hacerle un .Sort a la columna A (o a su region actual) de una determinada hoja...
(sin importar si la misma es la hoja activa actualmente o no)...
prueba el metodo tradicionalmente aplicado al rango de la hoja indicada de manera explicita (p.e.)

with worksheets("basededatos")
.range("a1").sort key1:=.range("a1"), header:=xlyes
end with

-> consulta en la ayuda en linea de vba por el uso de sus argumentos

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
Private Sub()
INICIO = ActiveCell.Address
FIN = ActiveCell.Address
Range(INICIO, FIN).Select
ActiveWorkbook.Worksheets("Basededatos").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Basededatos").Sort.SortFields.Add Key:=Range( _
INICIO, FIN), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Basededatos").Sort
.SetRange Range(INICIO, FIN)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Preguntas similares