Wyłapywanie błędów programu Visual Basic for Applications w programie Excel dla komputerów Macintosh

WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.

Anglojęzyczna wersja tego artykułu to:193247
Ten artykuł został zarchiwizowany. Jest oferowany „taki, jaki jest” i nie będzie już aktualizowany.
Streszczenie
Gdy wystąpi błąd w czasie wykonywania w programie Microsoft Visual Basic dla aplikacjimakra, na ekranie pojawi się komunikat o błędzie i makra albo zatrzymany.lub działa w sposób nieprzewidywalny.

Aby zapobiec aplikacji z awarii lub zachowuje się w sposób nieprzewidywalny, możnazawierają kod makra, który przechwytuje błąd i informuje o tym makra, w jaki sposób doje obsłużyć. Proces przechwytywaniu i obsługi błędów czasu wykonywaniao nazwie "wyłapywanie błędów." Zestaw instrukcji, która poinformuje aplikacjęsposób obsługi błędu jest nazywany "procedury obsługi błędów" lub "BłądObsługa."
Więcej informacji
Firma Microsoft podaje przykłady programowania wyłącznie, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. Obejmuje, ale nie jest ograniczona do domniemanych gwarancji jakości lub przydatności do określonego celu. W tym artykule założono, że czytelnik jest obeznany z językiem programowania, przy czym obrazuje i narzędzia, które są używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnej funkcji i konstruować nowych procedur w celu spełnienia szczególnych wymagań. Podczas wykonywania kodu języka Visual Basic mogą występować różne typybłędy, które może być zalewkowany. Można wykorzystać zalety wyłapywanie błędów wProgram Microsoft Excel dla komputerów Macintosh za pomocą następujących funkcji i instrukcji.

Błąd wyciągu

W O błędzie instrukcja powoduje, że języka Visual Basic for Applications uruchomić lub zatrzymać wyłapywanie błędów. W O błędzie Zestawienie określa także zestaw instrukcji execute, jeśli wystąpi błąd.

Błąd funkcji

W ERR funkcja zwraca liczbę wystąpił błąd.

Przykład użycie ERR Funkcja:
   Msgbox "The most recent error number is " & Err & _      ". Its message text is: " & Error(Err)				
Następująca tabela zawiera listę kodów przechwytywalny błąd, który możewystępować podczas korzystania z ERR Funkcja.
   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				

Błąd funkcji

W Błąd Funkcja zwraca komunikat o błędzie, który odpowiada numerowi danego błędu.

Przykład użycie Błąd Funkcja:
   Msgbox "The message text of the error is: " & Error(Err)				

Błąd instrukcji

W Błąd Instrukcja symuluje dzięki możliwości przypisania numeru niestandardowego błędu na wystąpienie błędu ERR Funkcja. Te wartości błędu użytkownika-zdefiniowane są wartości, które definiują procedury i które zawsze są przechowywane w zmiennych Wariant Typ danych. Typowym zastosowaniem tego typu wartość błędu jest procedury, które akceptuje kilka argumentów i zwracać wartość. Na przykład załóżmy, że wartość zwracana jest prawidłowy tylko wtedy, gdy argumenty mieszczą się w pewnym zakresie. Procedura można testować argumenty, które użytkownik udostępnia i jeśli argumenty nie są w dopuszczalnym zakresie, mogą mieć procedury zwrotu błąd odpowiednią wartość.

Błąd jest podtypem Wariant Typ danych i gdy jest używany termin "wartość błędu", zazwyczaj oznacza, że zmienna jest Wariant Typ i zawiera wartość, która rozpoznaje języka Visual Basic for Applications jako błąd zdefiniowany przez użytkownika. Wartości błędów są używane w procedurze oznacza, że wystąpiły błędy. W odróżnieniu od zwykłych błędów czasu wykonywania tych błędów nie przeszkadzają kodu, ponieważ są onerozpoznany jako zwykłe zmienne i nie błędy. Można przetestować własnych procedurdla tych błąd wartości i podjęcia właściwych działań naprawczych.

Można również użyć Błąd Instrukcja Symuluj błędy czasu wykonania. Jest to szczególnie przydatne podczas testowania aplikacji lub szczególny warunek są traktowane jako równoważne czasu wykonywaniaWystąpił błąd. Można pozorować dowolnego języka Visual Basic for błąd aplikacji w czasie wykonywaniapodając kod błędu dla błędów w Błąd Instrukcja. Można również użyć Błąd instrukcję, aby utworzyć własne zdefiniowane przez użytkownika błędów, podając kod błędu, który nie odpowiada języka Visual Basic for błąd czasu wykonywania aplikacji. Tabela zawierająca listę wbudowanych błędów pojawia się we wcześniejszej części tego artykułu (w "Err funkcja"sekcja). W tej chwili języka Visual Basic for Applications nie używa wszystkichdostępne numery wbudowanych błędów. W przyszłych wydaniach VisualPodstawowe dla aplikacji, wewnętrzne numery zwiększy więcej wbudowane-błędy są dodawane. Zaleca się, aby rozpocząć numerów błędów50 000 i do 65 535 pozwoli uniknąć potencjalnych konfliktów w pracyprzyszłość.

Przykład użycie Błąd Instrukcja Symuluj błędy w czasie wykonywania:
   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				
Po uruchomieniu makra Test pojawi się okno komunikatu zawierającego "Wystąpił błąd mój własny" jako wiadomość.

Funkcja CVErr

W CVErr funkcja jest używana do tworzenia wartości błędów. W CVErr Funkcja przyjmuje argument, który musi być liczbą całkowitą lub jest zmienna, która zawiera liczbę całkowitą.
   NoRadius = CVErr(2010)   NotANumber = 2020   InvalidArgument = CVErr(NotANumber)				
Przykład użycie CVErr Funkcja:
   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				

Za pomocą wbudowanego wartości błędów

Istnieje siedem wartości błędu wbudowanych w programie Excel dla komputerów Macintosh. W poniższej tabeli.Pokazuje numer błędu (stała), wartość literału błędu iBłąd przekonwertowane wartości.
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)				
Praca z tych wartości błędów wbudowany arkusz ten sam sposób pracyzdefiniowany przez użytkownika błędów--jako liczby konwertowane na wartości błędów przy użyciuFunkcja CVErr. Jedyną różnicą jest błędy arkuszaVisual Basic for Applications zawiera błędy o numerach jako wbudowanestałe i zawiera także wartości literału błędów. Te elementy nie sąprzewidziane wartości zdefiniowane przez użytkownika błędów. Wartości błędów literału musi byćw nawiasach kwadratowych pokazanych w powyższej tabeli.

Przykład przy użyciu wbudowanego wartości błędów:
   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				

Centralizowanie obsługi błędów

Podczas dodawania kod obsługi błędów na język Visual Basic for Applicationsmakra, także odkrywanie obsługi przy tych samych błędów nad inad ponownie. Można zmniejszyć rozmiar kodu i wymagany nakład pracypisanie kodu przez pisanie procedur kilka kod obsługi błędówmożna wywołać do obsługi typowych sytuacjach błędu.

Oto przykład procedury funkcja, która wyświetlakomunikat odpowiadający błędu, który wystąpił, oraz w miarę możliwości,Umożliwia użytkownikowi określenie, jakie działania podjąć dalej przez wybranieokreślony przycisk. Funkcja zwraca kod do proceduryo nazwie.
   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				

Obsługiwanie użytkowników przerwań

Użytkownik może przerwać procedurze Visual Basic for Applications przeznaciskając klawisz polecenia + kropka. Można wyłączyć przerwań dlaprocedury w gotowych aplikacji. Jednakże jeżeli nie można wyłączyćprzerywa użytkownika końcowego procedury, można mieć pewność, sieciprocedura jest powiadamiany, gdy wystąpił przerwania, dzięki czemu można zamknąćpliki, odłączenie od zasobów udostępnionych lub przywracania modyfikacji zmiennychprzed zwróceniem sterowania aplikacji użytkownika.

Można przechwytywać przerwania użytkownika w własnych procedur przez ustawienieEnableCancelKey Właściwość xlErrorHandler. Gdy ta właściwość jest ustawiona, wszystkie przerwania będzie generować wykonywania numer błędu 18, która może być zalewkowany za pomocą O błędzie Instrukcja. Może obsłużyć błędu wstrzymać procedurę i zamknąć program. Jeśli Wznów Instrukcja jest używany do kontynuować realizację procedury po schwytanych błąd w czasie wykonywania, przerwanie jest ignorowana.

Istnieje również możliwość całkowicie zignorować przerwania użytkownika, ustawiającEnableCancelKey Właściwość xlDisabled. W tym stanie program Excel dla komputerów Macintosh ignoruje wszystkie próby przez użytkownika przerwania uruchomiona procedura. Aby przywrócić domyślne przetwarzania przerwań, należy zmienić ustawienie EnableCancelKey Właściwość xlInterrupt. Aby zapobiec sytuacji, w której procedura trwale wyłączenie przerwania użytkownika, program Excel dla komputerów Macintosh zawsze przywraca domyślne ustawienie EnableCancelKey Właściwość xlInterrupt zawsze, gdy procedura kończy się jego wykonanie. Aby zapewnić poprawną obsługę przerwania w kodzie, należy jawnie Wyłącz lub pułapki przerwania przy każdym wykonaniu procedury. Należy zauważyć, że obsługi przerwań tylko jeden może być używany dla każdej procedury i tego samego programu obsługi jest używana dla wszystkich błędów czasu wykonywania napotykanych przez tę procedurę.

Poniższy przykład ilustruje procedury, która wymaga dużejokres czasu. Jeśli użytkownik przerwania procedury, błądjest wychwytywany. Przerwania użytkownika najpierw potwierdza, że procedura powinnafaktycznie zatrzymany i kończy procedurę w sposób uporządkowany.
   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				
Jeśli uruchomienie makra ProcessData i szybko nacisnąć klawisze CTRL + BREAKzostanie wyświetlone okno komunikatu, które pyta, czy zatrzymać przetwarzanie rekordów.Jeśli klikniesz przycisk Tak, inne okno komunikatu z "przerwana przez użytkownika"zostanie wyświetlone. Jeśli klikniesz przycisk OK w tym oknie komunikatu zakończenia makra. Jeśli użytkownikKliknij przycisk Nr w pierwszym polu wiadomości nadal makro.

Instrukcja życiorysu

W Wznów Instrukcja wznowi wykonywanie kodu po obsługi błędówProcedura zostało zakończone.
XL98 XL2001 XL2004 XLX

Ostrzeżenie: ten artykuł przetłumaczono automatycznie

Właściwości

Identyfikator artykułu: 193247 — ostatni przegląd: 12/05/2015 09:21:16 — zmiana: 4.0

Microsoft Excel 2004 for Mac, Microsoft Excel X for Mac, Microsoft Excel 2001 for Mac, Microsoft Excel 98 for Macintosh

  • kbnosurvey kbarchive kbdtacode kbhowto kbmt KB193247 KbMtpl
Opinia