Chyba odchytu v jazyku Visual Basic for Applications v programe Excel pre systém Macintosh

Preklady článku Preklady článku
ID článku: 193247 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Keď chyba spustenia vyskytuje v Microsoft Visual Basic pre aplikácie makro, chybové hlásenie sa zobrazí na obrazovke a buď zastaví makro alebo chová nepredvídateľne.

Ak chcete zabrániť uplatňovaním shazovat alebo správať nepredvídateľne, môžete zahŕňať kód makra, ktorý zachytáva chyba a povie makro, ako na zvládnu. Tento proces vedie a manipuláciu chyba spustenia je názvom "chyba odchytu." Súbor inštrukcií, ktorý rozpráva uplatňovanie ako zvládnuť chyba sa nazýva "chýb rutinné" alebo „chyba obslužný program."

DALSIE INFORMACIE

Spoločnosť Microsoft poskytuje príklady programovacieho kódu len ako názornú ukážku bez ľubovoľnej vyjadrenej alebo implicitnej záruky. Toto zahŕňa, okrem iného, implicitné záruky obchodovateľnosti a vhodnosti pre konkrétny účel. Úroveň odbornosti článku predpokladá, že ovládate predvádzaný programovací jazyk a nástroje, ktoré sa používajú na vytváranie a ladenie procedúr. Pracovníci technickej podpory spoločnosti Microsoft môžu pomôcť vysvetliť funkčnosť konkrétny postup, ale nie modifikuje tieto príklady poskytovať pridanú funkčnosť alebo výstavbe postupy splniť vaše konkrétne požiadavky. Je spustený kód jazyka Visual Basic môžete stretnúť niekoľko typov chyby, ktoré mô u byť zachytené. Môžete využiť chyba odchytu v Program Microsoft Excel pre Mac pomocou nasledujúce funkcie a vyhlásenia.

Na vyhlásenia, chyba

V On Error vyhlásenie spôsobuje Visual Basic for Applications chcete spustiť alebo zastaviť chyba odchytu. V On Error vyhlásenie taktiež určuje závierku vykonať, ak sa vyskytla chyba.

Err funkcia

V Err Funkcia vráti počet sa vyskytla chyba.

Príklad použitia Err Funkcia:
   Msgbox "The most recent error number is " & Err & _
      ". Its message text is: " & Error(Err)
				
Nasledujúca tabuľka obsahuje zoznam kódov zachytiteľná chyba, môžete stretnúť, keď používate Err Funkcia.
   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 funkcie

V Chyba Funkcia vráti chybové hlásenie, ktoré zodpovedá číslu danej chyby.

Príklad použitia Chyba Funkcia:
   Msgbox "The message text of the error is: " & Error(Err)
				

Chyba vyhlásenie

V Chyba vyhlásenie simuluje výskyt chybu tým, že umožní vám priradiť vlastné chybové číslo Err Funkcia. Tieto užívateľa-definované chybové hodnoty sú hodnoty, ktoré definujete pre svoje postupy a vždy uložené v premenných Variant typ údajov. Bežné používanie tohto typu chybovú hodnotu je v postupoch, ktoré akceptovať niekoľko argumenty a vráti hodnotu. Predpokladajme, že vrátená hodnota je platná iba vtedy, ak argumenty spadajú do určitého rozsahu. Váš postup môžete otestovať tvrdenia, ktoré poskytuje užívateľ a ak argumenty nie sú v rozsahu prijateľné, môžete mať postup návrat vhodné chybovú hodnotu.

Chyba je podtypu Variant typ údajov a keď sa používa pojem "chybovú hodnotu", zvyčajne to znamená, že premenná je Variant typ a že obsahuje hodnotu, ktorá Visual Basic for Applications rozpozná ako používateľom definovanú chybu. Chybové hodnoty sú použité v postupe na označenie, že sa vyskytli chyby podmienky. Na rozdiel od bežných run-time chyby, tieto chyby neprerušia váš kód pretože sú uznané ako bežné premenných a nie chyby. Môžete otestovať svoje postupy pre tieto chybové hodnoty a prijať vhodné nápravné opatrenia.

Môžete tiež použiť Chyba vyhlásenie k simulácii run-time chyby. To je obzvlášť užitočné pri testovaní aplikácie, alebo ak chcete na liečbu konkrétneho stavu za rovnocenné run-time chyba. Akékoľvek Visual Basic for Applications môže byť simuluje chyba spustenia poskytovaním chybový kód chyby Chyba vyhlásenie. Môžete tiež použiť Chyba výkaz vytvoriť vlastné užívateľské chyby poskytovaním chybový kód, ktorý nezodpovedá Visual Basic for Applications chyba spustenia. Tabuľka obsahuje zoznam vstavaných chýb sa zobrazí skôr v tomto článku (pod "Err funkcia" sekcia). V tejto dobe, Visual Basic for Applications nepoužíva všetky dostupné čísla pre vstavané chyby. V ďalších vydaniach Visual Basic pre aplikácie a interné čísla bude zvyšovať, ako viac postavený- chyby sa dopĺňajú. Odporúča sa, že začnete chybových čísel 50.000 a prácu vašej ceste až 65 535 znakov sa predišlo možným konfliktom v budúcnosť.

Príklad použitia Chyba Vyhlásenie k simulácii Run-time chyby:
   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
				
Keď je spustené makro Test, dostanete okno hlásenia, ktorý obsahuje "moje vlastné chyba vyskytla" ako správy.

Funkcia CVErr

V CVErr Funkcia sa používa na vytvorenie chybové hodnoty. V CVErr funkcia má argument, že musí byť celé číslo alebo byť premenná, ktorá obsahuje celé číslo.
   NoRadius = CVErr(2010)

   NotANumber = 2020
   InvalidArgument = CVErr(NotANumber)
				
Príklad použitia CVErr Funkcia:
   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
				

Pomocou vstavaného chybové hodnoty

Existuje sedem vstavané chybových hodnôt v programe Excel pre Mac. Nižšie uvedená tabuľka zobrazuje číslo chyby (konštanta), doslovný chybovú hodnotu, a konvertovaný chybovú hodnotu.
Error number (Constant)   Literal error value     Converted error value

xlErrDiv0                   [#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)
				
Pracujete s tieto vstavané hárka chybové hodnoty rovnakým spôsobom môžete pracovať s používateľom definovaného chyby--ako čísla konvertuje na chybové hodnoty pomocou Funkcia CVErr. Jediným rozdielom je, že pracovný hárok chýb, Visual Basic for Applications poskytuje chybových čísel ako vstavané konštanty a tiež poskytuje doslovný chybové hodnoty. Tieto položky nie sú stanovené hodnoty používateľom definovanú chybu. Doslovný chybové hodnoty musia byť uvedené v hranatých zátvorkách, ako je uvedené vyššie v tabuľke.

Príklad pomocou vstavaného chybové hodnoty:
   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
				

Centralizácia vydávania chýb kód

Keď pridáte chýb kód jazyka Visual Basic pre aplikácie makrá, objavíte, že rovnaké chyby sú spracovávaného nad a znovu a znovu. Môžete zmenšiť veľkosť váš kód a požadovaná námaha písať kód do písaní niekoľko postupov, ktoré váš chýb kód môžete volať zvládnuť bežných situácií chyba.

Toto je príklad funkčnej procedúry, ktorá zobrazuje ICMP zodpovedajúcu chyba, ktorá sa vyskytla, a ak je to možné, to umožňuje používateľom určiť, aké opatrenia treba podniknúť ďalšie výberom určité tlačidlo. Potom vráti číselný kód postupu nazval ho.
   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
				

Manipuláciu užívateľa prerušuje

Používateľ môže prerušiť Visual Basic for Applications postup klávesov COMMAND + bodka. Je možné vypnúť prerušenia pre postupov v hotových aplikácie. Avšak, ak nevypínať používateľ preruší hotových postupu, môžete istí, že váš postup je oznámené prerušenie nastala tak, že môžete zatvoriť súbory, odpojiť zdieľané prostriedky alebo obnovenia upravené premenné pred návratom kontroly uplatňovania používateľovi.

Pasce používateľa prerušenia vo vašom postupoch stanovenímEnableCancelKey Vlastnosť xlErrorHandler. Ak je táto vlastnosť nastavená, všetky prerušenia bude generovať run-time číslo chyby 18, ktoré mô u byť zachytené pomocou On Error vyhlásenie. Chyba na zastavenie konania a skončiť program dokáže spracovať. Ak Životopis vyhlásenie sa používa na pokračovať v postupe po odchytených chyba spustenia, prerušenie je ignorované.

Je tiež možné úplne ignorovať používateľa prerušenia nastavenímEnableCancelKey Vlastnosť xlDisabled. V tomto štáte, program Excel pre Mac ignoruje všetky pokusy používateľ na prerušenie postupu beží. Ak chcete obnoviť predvolené prerušenie spracovania, zmeniť nastavenie EnableCancelKey Vlastnosť xlInterrupt. Zabrániť natrvalo vypnúť používateľské prerušenia postup, Excel pre Mac vždy obnoví predvolené nastavenie EnableCancelKey Vlastnosť xlInterrupt vždy, keď udalostnej procedúry jeho realizácie. Zabezpečiť správne spracovávaných prerušenia v kóde, musíte explicitne vypnúť alebo pasce prerušenia zakaždým, keď postup je popravený. Treba poznamenať, že len jeden prerušenie obslužný program možno použiť na každého postupu, a že rovnaké obslužný program používa pre všetky run-time rozpoznaných podľa uvedeného postupu.

Následujúci príklad demonštruje postup, ktorý vyžaduje veľkú lehota na dokončenie. Ak používateľ preruší postupu, chyba je odchytené. Prerušenie užívateľ najprv potvrdzuje, že postup by skutočne sa zastavili a potom ukončí postup riadnym spôsobom.
   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
				
Ak spustíte makro ProcessData a potom rýchlo stlačte klávesy CTRL + BREAK, sa zobrazí hlásenie, ktoré vás vyzve, či chcete zastaviť spracovanie záznamov. Ak kliknete na tlačidlo Yes, iného okno hlásenia, so "prerušenie používateľa sa vyskytla" zobrazí sa. Ak kliknete na tlačidlo ok v toto chybové hlásenie, makro končí. Ak ste kliknite na tlačidlo Nie v prvom poli hlásenie, makro pokračuje.

Životopis vyhlásenie

V Životopis vyhlásenie obnoví code execution po chyba manipulácia rutinné dokončil.

Vlastnosti

ID článku: 193247 - Posledná kontrola: 19. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Excel 2004 for Mac
  • Microsoft Excel X for Macintosh
  • Microsoft Excel 2001 for Macintosh
  • Microsoft Excel 98 for Macintosh
Kľúčové slová: 
kbdtacode kbhowto kbmt KB193247 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:193247

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com