# Error en ejecucion de macro

[Inicio](https://www.todoexpertos.com/) › [Microsoft Excel](https://www.todoexpertos.com/temas/microsoft-excel)

- Fecha de publicación: 2015-11-06
- Enlace canónico (HTML): https://www.todoexpertos.com/preguntas/6gi4sthabb86ipta/error-en-ejecucion-de-macro

## Pregunta

*Por Osiany Contreras* · 2015-11-06

Me podrian apoyar con esta macro cuando la ejecuto de esta forma me marca error, MyRango es una variableDim myRango As RangeSet myRango = Worksheets(HojaDatoGrafico).Range("OF50:OG81")'ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort.SortFields.Add Key:=myRango, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormalY con estos datos funciona bien, lo unico que le cambio es la variable "myRango" por "Range("OG50:OG81"), y me marca errorActiveWorkbook.Worksheets(HojaDatoGrafico).Sort.SortFields.Add Key:=Range( _ "OG50:OG81"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort .SetRange myRango .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin. Apply ' Aqui me marca el error "la referencia de ordenacion no es valida, compruebe que esta dentro de los datos que desea ordenar y que el primer cuadro por ordenar no es el mismo o esta en blanco" End With

## Respuestas (1)

### 1. Respuesta aceptada de Dante Amor
*Fecha: 2015-11-06 · Votos: 2 (+2/-0)*

H o l a:Para ordenar ocupas 2 rangos, un rango es el que contiene el total de la información que vas a ordenar (puede ser una o varias columnas; el otro rango es el que contiene la llave por el que vas a ordenar el primer rango, esta llave solamente es de una columna:    With ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort
        .SortFields.Add Key:=Range("OG50:OG81"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange Range("OF50:OG81")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End WithEl rango en .setRange va desde OF hasta OGLa llave solamente es la columna OGSi lo quieres hacer con variables, quedaría así:    Dim myRango As Range
    Dim KeyRango As Range
    Set myRango = Range("OF50:OG81")    'total de rango que va a ordenarse
    Set KeyRango = Range("OG50:OG81")   'columna llave para ordenar
    '
    With ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort
        .SortFields.Add Key:=KeyRango, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange myRango
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Muchas gracias Dante por tu pronta respuesta, se resolvió ese problema pero ahora me arroja otro que es cuando quiero asignarle un nuevo rango de datos al Gráfico 1 que tengo, el procedimiento completo es el siguiente:(Con negritas marco donde me marca error"Private Sub Materia_Change()Dim HojaDatoGrafico As StringDim NombreHoja As StringDim Casos As StringDim myRango As RangeDim keyRango As RangeWorksheets("Config").Range("G31") = MateriaHojaDatoGrafico = Worksheets("Config").Range("F22") & Worksheets("Config").Range("F23")Set myRango = Worksheets(HojaDatoGrafico).Range("OF50:OG81")Set keyRango = Worksheets(HojaDatoGrafico).Range("OG50:OG81")If (BuscarHoja1(HojaDatoGrafico)) ThenCasos = Worksheets("Config").Range("R24")If Worksheets("Config").Range("R24") = Casos Then Worksheets(HojaDatoGrafico).Select Range("ALUMNOS").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "CRITERIO"), CopyToRange:=Range("SALIDA"), Unique:=False 'Ordena segun la materia para mostrar los 10 mejores myRango.Select ActiveWindow.LargeScroll Down:=-1 ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort.SortFields.Clear ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort.SortFields.Add Key:=keyRango, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormalWith ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort .SetRange myRango .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply Range("OG49").Select End With Worksheets("Grafica").Select'Activa el Gráfico para hacer los cambios de Rangos ActiveSheet.ChartObjects("Gráfico 1").Activate 'Cambia los datos del Rango del Grafico ActiveChart.SetSourceData Source:=Sheets(HojaDatoGrafico).myRango 'Cambia el Titulo o encabezado del Grafico ActiveChart.HasTitle = True ActiveChart.ChartTitle.Text = "Los Diez Mejores Alumnos en " & Materia 'Muestra el Grafico en UserForm Set Grafico = Sheets("Grafica").ChartObjects("Gráfico 1").Chart 'Nome = "C:\Windows\Temp" & Application.PathSeparator & "temp.gif" Nome = ThisWorkbook.Path & Application.PathSeparator & "temp.gif" Grafico.Export Filename:=Nome, Filtername:="GIF" Image1.Picture = LoadPicture(Nome) Image1.Visible = True End If Label3.Visible = False Label4.Visible = False Bimestre.Visible = False Materia.Visible = False Grado.SetFocus Else MsgBox "La Hoja de la Base de Datos para el Grafico No existe " & HojaDatoGrafico, vbCritical, "Osiany Contreras" Grupo.BackColor = &HFF& Grupo.Enabled = True Image1.Visible = False End IfEnd Sub

H o l a:Valora la respuesta.Con todo gusto te ayudo con lo que necesites. Crea una nueva pregunta para cada petición.Sal u dos

Muchas gracias Dante por tu pronta respuesta, se resolvió ese problema pero ahora me arroja otro que es cuando quiero asignarle un nuevo rango de datos al Gráfico 1 que tengo, el procedimiento completo es el siguiente:(Con negritas marco donde me marca error"Private Sub Materia_Change()Dim HojaDatoGrafico As StringDim NombreHoja As StringDim Casos As StringDim myRango As RangeDim keyRango As RangeWorksheets("Config").Range("G31") = MateriaHojaDatoGrafico = Worksheets("Config").Range("F22") & Worksheets("Config").Range("F23")Set myRango = Worksheets(HojaDatoGrafico).Range("OF50:OG81")Set keyRango = Worksheets(HojaDatoGrafico).Range("OG50:OG81")If (BuscarHoja1(HojaDatoGrafico)) ThenCasos = Worksheets("Config").Range("R24")If Worksheets("Config").Range("R24") = Casos ThenWorksheets(HojaDatoGrafico).SelectRange("ALUMNOS").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _"CRITERIO"), CopyToRange:=Range("SALIDA"), Unique:=False'Ordena segun la materia para mostrar los 10 mejoresmyRango.SelectActiveWindow.LargeScroll Down:=-1ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort.SortFields.ClearActiveWorkbook.Worksheets(HojaDatoGrafico).Sort.SortFields.Add Key:=keyRango, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormalWith ActiveWorkbook.Worksheets(HojaDatoGrafico).Sort.SetRange myRango.Header = xlYes.MatchCase = False.Orientation = xlTopToBottom.SortMethod = xlPinYin.ApplyRange("OG49").SelectEnd WithWorksheets("Grafica").Select'Activa el Gráfico para hacer los cambios de RangosActiveSheet.ChartObjects("Gráfico 1").Activate'Cambia los datos del Rango del GraficoActiveChart.SetSourceData Source:=Sheets(HojaDatoGrafico).myRango'Cambia el Titulo o encabezado del GraficoActiveChart.HasTitle = TrueActiveChart.ChartTitle.Text = "Los Diez Mejores Alumnos en " & Materia'Muestra el Grafico en UserFormSet Grafico = Sheets("Grafica").ChartObjects("Gráfico 1").Chart'Nome = "C:\Windows\Temp" & Application.PathSeparator & "temp.gif"Nome = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"Grafico.Export Filename:=Nome, Filtername:="GIF"Image1.Picture = LoadPicture(Nome)Image1.Visible = TrueEnd IfLabel3.Visible = FalseLabel4.Visible = FalseBimestre.Visible = FalseMateria.Visible = FalseGrado.SetFocusElseMsgBox "La Hoja de la Base de Datos para el Grafico No existe " & HojaDatoGrafico, vbCritical, "Osiany Contreras"Grupo.BackColor = &HFF&Grupo.Enabled = TrueImage1.Visible = FalseEnd IfEnd Sub

H o l a:Me refiero a que debes crear otra pregunta en el tema de excel.

---
*Fuente: [https://www.todoexpertos.com/preguntas/6gi4sthabb86ipta/error-en-ejecucion-de-macro](https://www.todoexpertos.com/preguntas/6gi4sthabb86ipta/error-en-ejecucion-de-macro) — consultado el 2026-10-23. Al citar, enlaza la URL canónica e indica la fecha de consulta.*
