Chyba soutisku s jazyka pro aplikace v aplikaci Excel for Mac

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:193247
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Souhrn
Když dojde k chybě při běhu v Microsoft Visual Basic pro Applications makro, na obrazovce se zobrazí chybová zpráva a makro zastaví nebo chová nestandardně.

Zabránit aplikaci z tuhnoucí nebo nestandardně pracují, můžete zahrnout kód makra, která zachycuje chyby a informuje o makro a jak ji zpracovat. Proces že zachytí a zpracování chyby při běhu se nazývá "Chyba soutisku." Sada pokynů, které aplikace informuje, jak zpracovávat chyby se nazývá "rutiny ošetření chyb" nebo "obslužná rutina chyb"
Další informace
Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené,. včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele. Je spuštěn kód jazyka, můžete se setkat s několika typy chyb, které mohou být soutisk. Můžete využít z chyba soutisku v aplikaci Microsoft Excel for Mac pomocí následujících funkcí a příkazů.

V prohlášení chyba

Způsobí příkazu On Error jazyka pro spuštění nebo zastavení chyba soutisku aplikace. Příkaz On Error také určuje sadu příkazů spuštění, pokud k chybě.

Chybová funkce

Chyba funkce vrací číslo došlo k chybě.

Příklad použití funkce Err:
   Msgbox "The most recent error number is " & Err & _      ". Its message text is: " & Error(Err)				
následující tabulka obsahuje seznam kódů zachytitelné chybě může dojít při použití funkce Err.
   Error code   Error message   ----------   -------------   3            Return without GoSub   5            Invalid procedure call   6            Overflow   7            Out of memory   9            Subscript out of range   10           This array is fixed or temporarily locked   11           Division by zero   13           Type mismatch   14           Out of string space   16           Expression too complex   17           Can't perform requested operation   18           User interrupt occurred   20           Resume without error   28           Out of stack space   35           Sub, function, or property not defined   47           Too many DLL application clients   48           Error in loading DLL   49           Bad DLL calling convention   51           Internal error   52           Bad file name or number   53           File not found   54           Bad file mode   55           File already open   57           Device I/O error   58           File already exists   59           Bad record length   61           Disk full   62           Input past end of line   63           Bad record number   67           Too many files   68           Device unavailable   70           Permission denied   71           Disk not ready   74           Can't rename with different drive   75           Path/File access error   76           Path not found   91           Object variable or With block variable not set   92           For Loop not initialized   93           Invalid pattern string   94           Invalid use of Null   298          System DLL could not be loaded   320          Can't use character device names in specified file names   321          Invalid file format   322          Can't create necessary temporary file   325          Invalid format in resource file   327          Data value named was not found   328          Illegal parameter; can't write arrays   335          Could not access system registry   336          ActiveX component not correctly registered   337          ActiveX component not found   338          ActiveX component did not correctly run   360          Object already loaded   361          Can't load or unload this object   363          Specified ActiveX control not found   364          Object was unloaded   365          Unable to unload within this context   368          The specified file is out of date. This program requires                a newer version   371          The specified object can't be used as an owner form for                Show   380          Invalid property value   381          Invalid property-array index   382          Property Set can't be executed at run time   383          Property Set can't be used with a read-only property   385          Need property-array index   387          Property Set not permitted   393          Property Get can't be executed at run time   394          Property Get can't be executed on write-only property   400          Form already displayed; can't show modally   402          Code must close topmost modal form first   419          Permission to use object denied   422          Property not found   423          Property or method not found   424          Object required   425          Invalid object use   429          ActiveX component can't create object or return                reference to this object   430          Class doesn't support OLE Automation   430          Class doesn't support Automation   432          File name or class name not found during Automation                operation   438          Object doesn't support this property or method   440          OLE Automation error   440          Automation error   442          Connection to type library or object library for remote                process has been lost   443          Automation object doesn't have a default value   445          Object doesn't support this action   446          Object doesn't support named arguments   447          Object doesn't support current locale settings   448          Named argument not found   449          Argument not optional or invalid property assignment   450          Wrong number of arguments or invalid property assignment   451          Object not a collection   452          Invalid ordinal   453          Specified DLL function not found   454          Code resource not found   455          Code resource lock error   457          This key is already associated with an element of this                collection   458          Variable uses a type not supported in Visual Basic   459          This component doesn't support events   460          Invalid Cipboard format   461          Specified format doesn't match format of data   480          Can't create AutoRedraw image   481          Invalid picture   482          Printer error   483          Printer driver does not support specified property   484          Problem getting printer information from the system.                Make sure the printer is set up correctly   485          Invalid picture type   486          Can't print form image to this type of printer   735          Can't save file to Temp directory   744          Search text not found   746          Replacements too long   31001        Out of memory   31004        No object   31018        Class is not set   31027        Unable to activate object   31032        Unable to create embedded object   31036        Error saving to file   31037        Error loading from file				

Chyba funkce

Chyba funkce vrátí chybovou zprávu, která odpovídá číslo dané chyby.

Příklad použití funkce Chyba:
   Msgbox "The message text of the error is: " & Error(Err)				

Chyba příkazu

Chyba příkazu simuluje umožňuje přiřadit vlastní chyba číslo funkce Err výskyt chyby. Tyto chybové hodnoty definované uživatele-jsou hodnoty, které definujete pro vaše postupy a, které jsou vždy uloženy v proměnné typu Variant. Běžné použití tohoto typu chybová hodnota je v procedurách přijmout několik argumenty a vrátit hodnotu. Předpokládejme například, že vrácená hodnota je platná pouze pokud argumenty spadají do určité oblasti. Do procedury můžete otestovat argumenty poskytuje uživateli a argumenty nejsou v přijatelný rozsah, můžete mít postup vrácení příslušnou chybovou hodnotu.

Chyba je podtypu typu Variant a pokud je používán termín "Chyba hodnota", obvykle to znamená je proměnná typu Variant a zda obsahuje hodnotu jazyka pro aplikace rozpozná jako chyby definované uživatelem. Chybové hodnoty jsou použity v proceduře k označení, že došlo k chybě podmínky. Na rozdíl od normální chyby při běhu tyto chyby není přerušení kódu protože rozpozná jako běžná proměnné a nejsou chyby. Vaše postupy lze otestovat tyto chybové hodnoty a provést příslušné opravná akce.

Také můžete v příkazu Chyba simulovat chyby při běhu. To je zvláště užitečný při testování aplikací nebo chcete určitá podmínka považovat právě ekvivalentní chybu běhu. Chyba aplikace při spuštění libovolného jazyka lze simulované zadáním kód chyby Chyba v příkazu Chyba. Chyba příkazu můžete použít také vytvořit vlastní chyby definované uživatelem zadáním kód chyby, které neodpovídá Visual Basic for Applications chybu běhu. Tabulka obsahující seznam předdefinovaných chyby se zobrazí dříve v tomto článku (části "Chybová funkce"). V tomto okamžiku jazyka pro aplikace nepoužívá všechna čísla k dispozici vestavěné chyby. V budoucích verzích jazyka pro aplikace interní čísla zvýší jako více integrována - chyby jsou přidány. Je vhodné spustit čísla chyb na 50 000 a pracovat vaše způsobem až do 65 535 v budoucnosti vyhnout možné konflikty.

Příklad použití Chyba prohlášení Simulate runtime chyb:
   Sub Test()      On Error Resume Next      Error 50000          'set the value of Err to 50000      If Err = 50000 Then         MsgBox "my own error occurred"      End If   End Sub				
při the test makro spustit, zobrazí okno zprávy obsahující "vlastní došlo k chybě „ jako zpráva.

Funkce CVErr

Funkce CVErr slouží k vytvoření chybové hodnoty. Funkce CVErr trvá argument, který musí být celé číslo nebo být proměnná, která obsahuje celé číslo.
   NoRadius = CVErr(2010)   NotANumber = 2020   InvalidArgument = CVErr(NotANumber)				
Příklad použití funkce CVErr:
   Public NoRadius, NotANumber   Sub AreaOfCircle()      Const PI = 3.142      NoRadius = CVErr(2010)      NotANumber = CVErr(2020)      Radius = CheckData(InputBox("Enter the radius: "))      If IsError(Radius) Then         Select Case Radius            Case NoRadius               MsgBox "Error: No radius given."            Case NotANumber               MsgBox "Error: Radius is not a number."            Case Else               MsgBox "Unknown Error."         End Select      Else         MsgBox "The area of the circle is " & (PI * Radius ^ 2)      End If   End Sub   Function CheckData(TheRadius)      If Not IsNumeric(TheRadius) Then         CheckData = NotANumber      ElseIf TheRadius = 0 Then         CheckData = NoRadius      Else         CheckData = TheRadius      End If   End Function				

Pomocí předdefinované chybové hodnoty

Existuje sedm vestavěné chybové hodnoty v aplikaci Excel pro Mac. V tabulce zobrazuje číslo chyby (konstantní), hodnota literálu chyba a převedené chybovou hodnotu.
Error number (Constant)   Literal error value     Converted error valuexlErrDiv0                   [#DIV/0!]               CVErr(xlErrDiv0)xlErrNA                     [#N/A]                  CVErr(xlErrNA)xlErrName                   [#NAME?]                CVErr(xlErrName)xlErrNull                   [#NULL!]                CVErr(xlErrNull)xlErrNum                    [#NUM!]                 CVErr(xlErrNum)xlErrRef                    [#REF!]                 CVErr(xlErrRef)xlErrValue                  [#VALUE!]CVErr(xlErrValue)				
Pracovat stejným způsobem pracovat s chyby definované uživatelem--jako čísla převedeny na chybové hodnoty pomocí funkce CVErr těchto vestavěných listu chybové hodnoty. Jediný rozdíl je, že chyby listu, jazyka pro aplikace poskytuje čísla chyb jako předdefinované konstanty a poskytuje také literál chybové hodnoty. Tyto položky nejsou poskytovány pro uživatelem definované chybové hodnoty. Literál chybové hodnoty musí být uzavřeny v hranatých závorkách podle výše uvedené tabulky.

Příklad použití předdefinované hodnoty Chyba:
   Function Commission(SharesSold,PricePerShare)      If Not (IsNumeric(SharesSold) And IsNumeric(PricePerShare)) Then         Commission = CVErr(xlErrNum)      Else         TotalSalePrice = ShareSold * PricePerShare         If TotalSalePrice <= 15000 Then            Commission = 25 + 0.03 * SharesSold         Else            Commission = 25 + 0.03 * (0.9 * SharesSold)         End If      End If   End Function				

Při zpracování kódu centralizaci

Při Visual Basic for Applications maker přidat kód chyby zpracování, bude zjistíte, že stejné chyby jsou zpracovávaném opakovaně. Zmenšit velikost kódu a úsilí nutné zapisovat kód pomocí zápisu několik postupů, můžete volat kód ošetření chyb zpracování běžných situacích chyba.

Následuje příklad procedury funkce, která zobrazí zprávu odpovídající chybě došlo a kde je možné, umožňuje uživateli určit jaké akce trvat výběrem určité tlačítko Další. Potom vrací kód číslo postupu nazývá jej.
   Public Const RESUME_STATEMENT = 0   'Resume   Public Const RESUME_NEXT = 1        'Resume Next   Public Const UNRECOVERABLE = 2      'Unrecoverable error   Public Const UNRECOGNIZED = 3       'Unrecognized error   Public Const ERR_DEVICEUNAVAILABLE = 68   Public Const ERR_BADFILENAMEORNUMBER = 52   Public Const ERR_PATHDOESNOTEXIST = 76   Public Const ERR_BADFILEMODE = 54   Function FileErrors(errVal As Integer) As Integer   Dim MsgType As Integer, Msg As String, Response As Integer      MsgType = vbExalamation      Select Case errVal         Case ERR_DEVICEUNAVAILABLE     'Error #68            Msg = "That device is unavailable."            MsgType = MsgType + vbAbortRetryIgnore         Case BADFILENAMEORNUMBER      'Errors #64 & 52            Msg = "That filename is not valid."            MsgType = MsgType + vbOKCancel         Case PATHDOESNOTEXIST      'Error #76            Msg = "That path does not exist."            MsgType = MsgType + vbOKCancel         Case BADFILEMODE      'Error #54            Msg = "Can not open the file for that type of access."            MsgType = MsgType + vbOKCancel         Case Else            FileErrors = UNRECOGNIZED            Exit Function      End Select      Response = MsgBox(Msg, MsgType, "Disk Error")      Select Case Response         Case vbOK, vbRetry            FileErrors = RESUME_STATEMENT         Case vbIgnore            FileErrors = RESUME_NEXT         Case vbCancel, vbAbort            FileErrors = UNRECOVERABLE         Case Else            FileErrors = UNRECOGNIZED      End Select   End Function				

Zpracování uživatelských přerušení

Uživatel může přerušit stisknutím kláves COMMAND + tečka Visual Basic for Applications procedury. Je možné zakázat přerušení postupy dokončené aplikací. Však Pokud zakážete přerušení uživatele v dokončení postupu, můžete zajistit, že je při přerušení došlo tak, aby jej můžete zavřít soubory, odpojit od sdílených prostředků nebo obnovit upravené proměnných před vrácením ovládací prvek aplikace uživateli upozorněn do procedury.

Přerušení uživatele můžete soutisk v procesech nastavením vlastnost EnableCancelKeyxlErrorHandler. Při nastavení této vlastnosti všech přerušení generovat run-time, číslo chyby 18, které mohou být pomocí příkazu On Error soutisk. Chyba k zastavení postup a ukončit program může zpracovávat. Pokud příkaz resume používá pokračovat v postupu po trapped chybu běhu, přerušení ignorována.

Je také možné zcela ignorovat přerušení uživatele pomocí nastavení vlastnosti EnableCancelKeyxlDisabled. V tomto stavu pro Mac ignorovány všechny pokusy uživatele o přerušení spuštěna procedura. Chcete-li obnovit výchozí přerušení, zpracování, změnit nastavení vlastností EnableCancelKeyxlInterrupt. Chcete-li zabránit trvale zakázání přerušení uživatele proceduru, Excel for Mac vždy obnoví výchozí nastavení vlastnosti EnableCancelKeyxlInterrupt kdykoli postupu dokončí jeho spuštění. Chcete-li zajistit, že jsou správně zpracován přerušení v rámci kódu, musíte explicitně zakázat nebo soutisk přerušení při každém postupu provedeny. Je třeba poznamenat, že popisovač přerušení pouze jeden lze použít pro každý postup a používané pro všechny chyby při běhu zjistil, že postup stejný popisovač.

Následující příklad ukazuje postup vyžaduje velké dobu. Pokud uživatel přeruší proceduru, chybě soutisk. Přerušení uživatel nejprve potvrzuje, postup by měl skutečně přerušena a ukončí postup systematickým způsobem.
   Sub ProcessData()      'Set up a user interrupt trapping as a run-time error      On Error GoTo UserInterrupt      Application.EnableCancelKey = xlErrorHandler      'Start a long duration task      For x = 1 to 1000000         For y = 1 to 10         Next y      Next x      Exit Sub   UserInterrupt:      If Err = 18 Then         If MsgBox ("Stop processing records?", vbYesNo) = vbNo Then            'Continue running at the point procedure was interrupted            Resume         Else            'Handle other errors that occur            MsgBox Error(Err)         End If      End If   End Sub				
-Li spustit makro ProcessData a rychle stiskněte kombinaci kláves CTRL + BREAK se zobrazí okno zprávy s výzvou k zastavení zpracování záznamů. Klepněte na tlačítko Ano se zobrazí jiné okno zprávy s "přerušení uživatele došlo k". Klepněte na tlačítko OK v tomto poli zprávy Makro končí. Pokud klepnete na tlačítko Ne v prvním poli zprávu, makro pokračuje.

Pokračování výpisu

Příkaz resume obnoví po dokončení zpracování rutina chyb kódu.
XL98 XL2001 XL2004 XLX

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 193247 - Poslední kontrola: 12/05/2015 09:21:11 - Revize: 5.4

Microsoft Excel 2004 for Mac, Microsoft Excel X pro počítače Macintosh, Microsoft Excel 2001 pro počítače Macintosh, Microsoft Excel 98 pro počítače Macintosh

  • kbnosurvey kbarchive kbmt kbdtacode kbhowto KB193247 KbMtcs
Váš názor