Jump to content
Marco Corrales

Optimizar una macro

Recommended Posts

Buenos días, gusto saludarles.

¿Algún consejo para optimizar este código y no tener que entrar a la hoja y tampoco seleccionar?

¿Será dando nombre al rango?

	Hoja3.Visible = True
Hoja3.Select
	    Columns("IA").EntireColumn.Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents
	

Les agradezco sus consejos.

Share this post


Link to post
Share on other sites
Hace 15 minutos , Antoni dijo:

Mejor así:


    Hoja3.Range(Hoja3.Columns("IA"), Hoja3.Columns("IA").End(xlToRight)).ClearContents

 

Si funciona, esta línea sustituye todo tu código.

Share this post


Link to post
Share on other sites

Este es mi código completo, lo que necesito es que la Hoja3 esté oculta y aun así se haga la consulta y se guarden los datos en dicha hoja, pero al estar en otra hoja, no me funciona, solo funciona cuando estoy en la Hoja3 directamente.

Sub IndicadoresConsultaExterna()


' Indicadores Consulta Externa

Application.ScreenUpdating = False
Application.DisplayStatusBar = True
Application.StatusBar = "Iniciando..."

bActualizoIndicadores = "0"

FrmBarAvan.Repaint

On Error GoTo Salida_error '*******************************

Dim sFecha As String
Dim sHora As String 'cambié el tipo Date a String, ya que versiones de office no lo leen

Hoja3.Visible = True
Hoja3.Select

	Columns("IA").EntireColumn.Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents

'Hoja3.Columns("IA:XFD").ClearContents 'Diego Foro
'Hoja3.Range(Columns("IA"), Columns("IA").End(xlToRight)).ClearContents 'Antoni Foro
'Hoja3.Range(Hoja3.Columns("IA"), Hoja3.Columns("IA").End(xlToRight)).ClearContents 'Antoni Foro

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://sa10624/finanzas/IndicdelDia/Tasaseindicadoreseconomicos_archivos/sheet001.htm" _
        , Destination:=Hoja3.[IA5]) 'Range("$IA$5")
        .Name = "IndicadoresDelDía"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    
 varContador = 0
 varRangoInicio = 0
     
'Para extraer los indicadores de la conexion realizada
   
  Range("TasaBasicaPasiva").Value = Hoja3.[II18].Value
    Range("TasaPrimeRate").Value = Hoja3.[II21].Value
    Range("TasaLibor").Value = Hoja3.[ID27].Value
    Range("tasaPromedioNeta").Value = Hoja3.[II22].Value
    Range("TipoCambioVenta").Value = Hoja3.[ID19].Value
    Range("TipoCambioCompra").Value = Hoja3.[ID18].Value
    Range("TipoCambioVentaBCR").Value = Hoja3.[IC19].Value
    Range("TipoCambioCompraBCR").Value = Hoja3.[IC18].Value
        
    sFecha = Hoja3.[IB7].Value
    sHora = Hoja3.[IJ8].Value

MsgBox (sFecha & " a las: " & sHora & vbNewLine & _
"" & vbNewLine & _
" Consulta realizada a la página: " & vbNewLine & _
"" & vbNewLine & _
"http://sa10624/finanzas/IndicdelDia/Tasaseindicadoreseconomicos_archivos/sheet001.htm") & vbNewLine & _
"" & vbNewLine & _
"" & vbNewLine & _
"* Debe estar seguro que los indicadores son los correctos, si alerta información erronea, debe digitarla manualmente."
    
'Para borrar la conexion y restar peso

    Columns("IA").EntireColumn.Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents

'Hoja3.Columns("IA:XFD").ClearContents 'Diego del Foro
'Hoja3.Range(Columns("IA"), Columns("IA").End(xlToRight)).ClearContents 'Antoni Foro
'Hoja3.Range(Hoja3.Columns("IA"), Hoja3.Columns("IA").End(xlToRight)).ClearContents 'Antoni Foro

    bActualizoIndicadores = "1"
  
'Si ocurre un error en todo el código de arriba el programa salta a esta linea
Salida_error:
    If Err.Number <> 0 Then
        MsgBox "Ha ocurrido una excepción en el proceso de consulta de los indicadores, ***RECUERDE*** que puede continuar con el proceso y digitarlos manualmente en caso de ser necesario. " & Err.Description
    Else
        If varRangoInicio = 0 Then
        End If
    End If

'Hoja3.Visible = xlVeryHidden

Application.ScreenUpdating = True
Application.StatusBar = "Ejecución terminada"

End Sub

 

Share this post


Link to post
Share on other sites

Elimina todos los .Select y califica todos los rangos, ejemplo:

Hoja3.Range("A1")=1
Hoja3.Range("A2")=1

With Hoja3
   .Range("A1")=1
   .Range("A2")=1
End With

y así con todos los rangos de todas las hojas, atención especial a ActiveSheet, cambia por Hoja3 o la que corresponda.

Share this post


Link to post
Share on other sites

Antoni, el error está en esta linea: 

Hoja3.Range(Hoja3.Columns("IA"), Hoja3.Columns("IA").End(xlToRight)).ClearContents 'Antoni Foro

Porque me tira: "Error en el método 'Range' de objeto '_Worksheet'.

La línea funciona perfectamente cuando la hoja está visible y activa, pero no así cuando está oculta.

Lo que tengo que hacer el sustituir el 'Range', pero no se como hacerlo, ¿será con un nombre al rango?

Share this post


Link to post
Share on other sites
Hace 3 horas, Marco Corrales dijo:

La línea funciona perfectamente cuando la hoja está visible y activa, pero no así cuando está oculta.

Posiblemente en algún lugar estas seleccionando esa hoja [.select], asegúrate de eliminar esa linea

Por ejemplo tienes esto

Hoja3.Visible = True
Hoja3.Select

Mejor trabajarlo con With [y no utilices "Visible"]

with hoja3
..... todo tu precedimiento ....
end with

También elimina "activesheet" pero deja el punto y antes de los Range pon el punto ".Range...." 

En resumen lee bastante sobre algunos objetos como Range, Worksheet y el controlador With

 

Saludos 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy