2010-07-27 12 views
0

Je Excel 2007 et Windows XP Lorsque ce code est exécuté:Excel 2007 `rendement définie par l'application ou définis par l'objet error`

Columns("A:G").Select 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B20000") _ 
     , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A20000") _ 
     , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("F2:F20000") _ 
     , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet1").Sort 
     .SetRange Range("A1:G20000") 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
Application.Calculation = xlCalculationAutomatic 

Il renvoie une erreur à .Apply:

Application-defined or object-defined error

Une chose à noter est que Application.Calculation = xlCalculationManual

En outre, je ne peux rien faire dans l'interface utilisateur, sauf pour la commutation onglets et l'ouverture du menu de bureau, et je dois aller au gestionnaire des tâches et cliquez sur la fin de la tâche pour quitter, après quoi il demande si je veux enregistrer. L'appui sur annuler ne le résout pas. Si je tape "non", ça ferme juste. Si je clique sur oui, il calcule et demande si je veux qu'il récupère mon travail.

+0

Je suppose que vous voulez dire Application.Calculation = xlCalculationManual (al, pas el) J'ai essayé le code ci-dessus et cela fonctionne pour moi. Quelle ligne donne l'erreur? Si vous ouvrez un nouveau classeur et exécutez le code par rapport à cela avez-vous des problèmes? – Fionnuala

Répondre

0

Eh bien, il s'est avéré que cela n'arrive que si l'ordinateur est chargé avec des programmes en cours d'exécution. J'ai fait une bonne réécriture et c'est beaucoup plus rapide maintenant. Le problème semble être pris en compte.

0

J'ai déplacé Application.Calculation = xlCalculationAutomatic juste avant cela et cela l'a corrigé.

Application.Calculation = xlCalculationAutomatic 
Columns("A:G").Select 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B20000") _ 
     , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A20000") _ 
     , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("F2:F20000") _ 
     , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet1").Sort 
     .SetRange Range("A1:G20000") 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 

Edit: Oops, il n'a pas, après tout.