Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Mac için Excel uygulamalar için Visual Basic hata yakalama

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:193247
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Özet
Microsoft Visual Basic for Applications makrosu bir çalıştırma hatası ortaya çıktığında, ekranda bir hata iletisi görüntülenir ve makronun durur veya unpredictably olarak davranır.

Kilitlenen veya unpredictably behaving uygulama önlemek için <a0></a0>, hata ele geçirilip makro bu anlatır makro kodu içerebilir. Tehlikesini ve bir çalışma zamanı hata işleme işlemi "hata yakalama" olarak adlandırılır Uygulama hata nasıl belirten yönergeler kümesi, "hata işleme yordamını" veya "hata işleyicisi" denir.
Daha fazla bilgi
Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler. Çeşitli hatalar yakalanan, Visual Basic kodu çalışırken karşılaşabilir. Ifadeler ve aşağıdaki işlevleri kullanarak Mac için Microsoft Excel'deki hata yakalama avantajlarından alabilir.

Hakkında hata bildirimi

Açık bir hata bildirimi, Visual Basic for Applications, başlatmak veya hata yakalama durdurmak neden olur. Ayrıca, Açık hata bildirimi ifadeler hatayla karşılaşılırsa, yürütülecek bir dizi belirtir.

Işlev hata

Err işlevi karşılaşılan hata verir.

Err işlevini kullanarak bir örnek:
   Msgbox "The most recent error number is " & Err & _      ". Its message text is: " & Error(Err)				
aşağıdaki tabloda, Err işlevini kullandığınızda karşılaşabileceğiniz yakalanabilir bir hata kodlarının listesini içerir.
   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				

Hata işlev

Hata işlevini, belirli hata sayıya karşılık gelen hata iletisi döndürür.

Hata işlevini kullanmaya örnek:
   Msgbox "The message text of the error is: " & Error(Err)				

Hata bildirimi

Hata bildirimi hata geçtiği Err işleve bir özel hata numarası atamanıza olanak sağlayarak taklit eder. Bu kullanıcı tanımlı hata değerleri için yordamlarınıza tanımlamak ve değişken veri türü değişkenleri her zaman saklanır değerlerdir. Bu tür bir hata değeri BIR çok yordamlarda, birden fazla bağımsız değişken kabul etmek ve bir değer kullanılır. Örneğin, dönüş değeri, yalnızca bağımsız bir belirli aralıkta geçerli olduğunu varsayın. Kullanıcının sağladığı bağımsız değişkenler için yordamınız test edebilirsiniz ve bağımsız değişkenler kabul edilebilir aralıkta, yordamın dönüş uygun hata değeri olabilir.

Hata alt türü olan bir değişken veri türü, "hata değeri" terimi kullanıldığında, bu genellikle bir değişkeni, Variant türü olduğunu ve Visual Basic for Applications, kullanıcı tanımlı bir hata olarak tanıdığı bir değer içerdiği anlamına gelir. Hata değerleri, bir yordam hata koşulu ortaya çıkan belirtmek için kullanılır. Sıradan değişkenleri ve değil hataları tanındığından normal çalışma zamanı hataları farklı olarak, bu hatalar kodunuzu kesme değil. Yordamlarınıza bu hata değerleri için sınama ve uygun düzeltici eylemleri.

Hata bildirimi, çalışma zamanı hataları benzetimini yapmak için de kullanabilirsiniz. Uygulamalarınızı sınarken veya bir çalıştırma hatası eşit olacak şekilde belirli bir koşulu değerlendirmek istediğinizde özellikle yararlıdır. Hata kodu için bir <a0>hata</a0> deyiminde hata sağlayarak Visual Basic for Applications çalışma zamanı hatası benzetimi. Hata bildirimi hataları kendi kullanıcı tanımlı bir Visual Basic for Applications çalışma zamanı hatası karşılık gelmeyen bir hata kodu sağlayarak oluşturmak için de kullanılabilir. Bu makalenin ("Hata işlev" bölümü) altında yerleşik hataların listesini içeren bir tablo görüntülenir. Bu aşamada, Visual Basic for Applications tüm kullanılabilir numaralarını yerleşik hatalar için kullanmaz. Ileride Visual Basic for Applications'ın sürümleri, dahili numaraları gibi daha yerleşik - hatalara eklenecek olan artacaktır. Hata numaralarınızın 50.000 adresindeki başlatın ve daha sonra olası çakışmaları önlemek için en çok 65.535 inin önerilir.

Örnek kullanma hata bildirimi için Benzet çalışma zamanı hataları:
   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				
, sınama makro çalıştırmak, "kendi hata oluştu" içeren bir ileti kutusu ileti alıyorsunuz.

CVErr işlevi

CVErr işlevi hata değeri oluşturmak için kullanılır. CVErr işlev bir bağımsız değişken ya da bir tamsayı olmalı veya bir tamsayı içeren bir deðiþken olarak alır.
   NoRadius = CVErr(2010)   NotANumber = 2020   InvalidArgument = CVErr(NotANumber)				
CVErr işlevini kullanarak bir örnek:
   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				

Yerleşik hata değerleri kullanma

Yedi yerleşik hata değer vardır, Mac için Excel Hata numarasını (sabit), harflerden oluşan bir hata değeri ve dönüştürülmüş bir hata değeri, aşağıdaki tabloda gösterilmektedir.
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)				
CVErr işlevini kullanarak hata değerleri için kullanıcı tanımlı hatalı--sayı olarak çalışacak şekilde dönüştürüldü, bu yerleşik bir çalışma sayfası hata değerleri bulunan iş. Visual Basic for Applications için çalışma sayfası hataları olan tek fark, hata numaraları olarak yerleşik sabitler sağlar ve harflerden oluşan hata değerleri sağlar. Bu öğe kullanıcı tanımlı hata değerleri için sağlanır. Yukarıdaki tabloda gösterilen literal hata değerleri köşeli ayraçlar içine alınmalıdır.

Yerleşik hata değerleri kullanarak bir örnek:
   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				

Hata kodu merkezileştirme.

Visual Basic for Applications makroları için hata işleme kodu eklediğinizde, aynı hataları tekrar tekrar işlenen fark. Kodunuzu ve birkaç genel hata durumları işlemek için hata işleme kodunuzu çağırabileceğiniz yordamlar yazarak, kod yazmak için gereken çaba boyutunu azaltabilirsiniz.

Aşağıdaki örnek bir işlev yordamının oluştu hata karşılık gelen bir ileti görüntüler; mümkün olan yerlerde, kullanıcının belirli bir düğmeyi seçerek sonraki gerçekleştirilecek eylemi sağlar. Sonra kodu numarası da denilen yordamına döndürür.
   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				

Kullanıcı işleme kesmeleri

Bir kullanıcı, COMMAND + NOKTA tuşlarına basarak bir Visual Basic for Applications yordamı kesebilirsiniz. Tamamlanmış uygulamalarınızda yordamlarıyla kesmeler devre dışı bırakmak olasıdır. Ancak, kullanıcı kesme yordamı bittiğinde, devre dışı bırakmayın, böylece, dosyaları kapatabilir, paylaştırılmış kaynaklarla bağlantısını sona erdirmek veya değiştirilmiş değişkenleri kullanıcıya uygulamanın denetimi döndürmeden önce geri kesme oluştuğunda yordamınız bildirilir emin olabilirsiniz.

XlErrorHandler için EnableCancelKey özelliğini ayarlayarak, kullanıcı kesme yordamlarınıza yakalayabilirsiniz. Bu özelliği ayarlandığında, tüm kesmeler bir çalışma zamanı hata numarası 18, bir Açma hatası deyimi kullanılarak yakalanan oluşturur. Yordamı durdurmak ve bu programdan çıkmak için hatayı işleyebilir. Kesme yordamı yakalanan bir çalıştırma hatasından sonra devam etmek için Sürdür deyimi kullanılırsa, göz ardı edilir.

Kullanıcı kesme tamamen yoksayması için xlDisabledEnableCancelKey özelliğini ayarlayarak da olasıdır. Mac için Excel, bu durumda, kullanıcı tarafından çalışan yordamı kesme yönelik tüm denemeler yoksayar. Işlem varsayılan kesme geri yüklemek için <a0></a0>, xlInterrupt için <a0>EnableCancelKey</a0> özelliğinin ayarını değiştirin. Yordamı, Yürütme tamamlandığında, her kullanıcı kesme kalıcı olarak devre dışı bir yordam önlemek için Mac için Excel her zaman <a0>EnableCancelKey</a0> özelliğinin varsayılan ayarını xlInterrupt için yükler. Kesmeleri doğru kodunuz içinde işlenme emin olmak için açıkça devre dışı veya yordamı yürütülen her kesmelere tuzak gerekir. Bunu unutulmamalıdır, tek bir kesme isteği işleyicisi her yordam için kullanılabilir ve aynı işleyicisi Bu yordamla karşılaştı, tüm çalışma zamanı hataları için kullanılır.

Aşağıdaki örnek, büyük bir zaman tamamlamak için süre gerektiren bir yordam gösterir. Hata yordamı kullanıcı keser, yakalanan. Kullanıcı kesme ilk yordamı gerçekten durdurulacak sonra bu yordamın düzenli bir şekilde çıkılıyor olduğunu doğrular.
   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				
ProcessData makroyu çalıştırmak ve hemen CTRL + BREAK tuşlarına, işlem kayıtları Durdur etkinleştirilip etkinleştirilmeyeceğini isteyen bir ileti kutusu görünür. Evet ' i tıklatın, "kullanıcı kesme oluştu" ile başka bir ileti kutusu görünür. Bu ileti kutusunda Tamam ' ı tıklatırsanız, makro sona erdirir. No ilk ileti kutusunda'ı varsa, makroyu devam eder.

Özgeçmiş Ekstresi

Bir hata yordamı tamamlandıktan sonra devam ifadesi kod yürütülmesine devam ettirir.
XL98 XL2001 XL2004 xlx

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 193247 - Son İnceleme: 12/05/2015 09:21:18 - Düzeltme: 5.4

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

  • kbnosurvey kbarchive kbmt kbdtacode kbhowto KB193247 KbMttr
Geri bildirim