تراكب خطأ باستخدام Visual Basic للتطبيقات في Excel لنظام التشغيل Mac

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية193247
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
عند حدوث خطأ وقت التشغيل في Microsoft Visual Basic أبليكاتيونسماكرو، تظهر رسالة إعلام بخطأ على الشاشة، ووحدات الماكرو هالتسور أي سلوك غير متوقع.

لمنع التطبيق تحطمها أو تصرف غير متوقع، يمكنك كانينكلودي تعليمات برمجية لماكرو اعتراض الخطأ ويعلم الماكرو كيف توهاندلي ذلك. عملية اعتراض ومعالجة خطأ وقت التشغيل إيسكاليد "تعويض خطأ." يسمى مجموعة الإرشادات تعلم أبليكاتيونهوو لمعالجة الخطأ "روتين معالجة الأخطاء" أو "معالج الخطأ".
معلومات أخرى
تقدم Microsoft أمثلة برمجية للتوضيح فقط، دون أي ضمان صريح أو ضمني. هذا يتضمن، لكن لا يقتصر على، الضمانات الضمنية الخاصة بالتسويق أو الملاءمة لغرض معين. تفترض هذه المقالة أنك معتاد على لغة البرمجة التي يتم شرحها والأدوات المستخدمة لإنشاء الإجراءات وتصحيحها. يساعد مهندسو الدعم لدى Microsoft في شرح وظيفة إجراء محدد، لكنهم لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات تستوفي متطلبات محددة. أثناء تشغيل التعليمات البرمجية ل Visual Basic، فقد تواجه أوفيرورس العديد من الأنواع التي يمكن حصرها. يمكنك يمكن الاستفادة من إينميكروسوفت الملائمة خطأ Excel لنظام التشغيل Mac باستخدام الدالات التالية والبيانات.

في كشف خطأ

تؤدي العبارة على خطأ Visual Basic for Applications لتشغيل أو إيقاف تراكب خطأ. تحديد عبارة خطأ أيضا مجموعة من البيانات التي سيتم تنفيذها إذا تم مصادفة خطأ.

دالة الخطأ

ترجع الدالة خطأ رقم الخطأ الذي حدث.

على سبيل المثال استخدام دالة الخطأ :
   Msgbox "The most recent error number is " & Err & _      ". Its message text is: " & Error(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				

دالة الخطأ

إرجاع دالة الخطأ رسالة الخطأ التي تطابق رقم خطأ معين.

على سبيل المثال استخدام دالة الخطأ :
   Msgbox "The message text of the error is: " & Error(Err)				

كشف خطأ

كشف خطأ يحاكي حدوث خطأ بالسماح لك بتعيين رقم خطأ مخصصة للدالة خطأ . قيم الخطأ هذه المعرفة-المستخدم هي القيم التي تقوم بتعريفها للإجراءات الخاصة بك والتي يتم تخزينها في متغيرات نوع بيانات المتغير دائماً. كان أحد الاستخدامات شائعة لهذا النوع من قيمة الخطأ في الإجراءات التي تقبل عدة وسائط وإرجاع قيمة. على سبيل المثال، افترض أن قيمة الإرجاع صالحة فقط في حالة الوسائط تقع ضمن نطاق معين. اختبار الإجراء الخاص بك الوسائط التي توفر للمستخدم، وإذا لم تكن الوسائط في النطاق المقبول، يمكنك أن إرجاع الإجراء قيمة الخطأ المناسبة.

خطأ في نوع فرعي من نوع بيانات المتغير وعندما يستخدم مصطلح "قيمة خطأ"، فإنه يعني عادة أن متغير من نوع المتغير ، وأنه يحتوي على قيمة التي يتعرف عليها Visual Basic for Applications كخطأ معرف من قبل المستخدم. يتم استخدام قيم خطأ في إجراء للإشارة إلى حدوث حالات الخطأ. بخلاف أخطاء وقت التشغيل العادي، هذه الأخطاء لا تتعارض مع التعليمات البرمجية الخاصة بك لأنها أريريكوجنيزيد كمتغيرات العادية وأخطاء لم. وما هي الإجراءات يمكن تيستفور هذه القيم الخطأ واتخاذ الإجراءات التصحيحية المناسبة.

يمكنك أيضا استخدام عبارة خطأ لمحاكاة أخطاء وقت التشغيل. هذا مفيد خصوصا عندما تقوم باختبار التطبيقات الخاصة بك، أو عندما تريد معاملة شرط معين كمكافئ لتشغيل-تيميرور. أي Visual Basic للتطبيقات خطأ وقت التشغيل يمكن تزويد رمز الخطأ للخطأ في بيان خطأ سيمولاتيدبي. يمكنك أيضا استخدام عبارة خطأ لإنشاء أخطاء معرفة من قبل المستخدم الخاصة بك عن طريق توفير رمز خطأ لا يتوافق مع Visual Basic للتطبيقات خطأ وقت التشغيل. يظهر الجدول الذي يحتوي على قائمة بالأخطاء المضمن مسبقاً في هذه المقالة (ضمن المقطع "خطأ دالة"). في هذا الوقت، Visual Basic for Applications لا يستخدم كافة الأرقام المتوفرة للأخطاء المضمنة. في المستقبل الإصدارات VisualBasic للتطبيقات، الأرقام الداخلية ستزيد كما تتم إضافة الأخطاء مضمنة أكثر. من المستحسن أن ابدأ نومبيرسات الخطأ الخاص بك 50000 والعمل طريقك إلى 65.535 لتجنب التعارضات المحتملة في المستقبل.

على سبيل المثال استخدام عبارة خطأ لمحاكاة أخطاء وقت التشغيل:
   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				
عند تشغيل اختبار الماكرو، تتلقى مربع رسالة يحتوي على "حدث خطأ الخاص بي" كالرسالة.

الدالة CVErr

يتم استخدام الدالة CVErr لإنشاء قيم الخطأ. تأخذ الدالة CVErr وسيطة التي يجب أن يكون عددا صحيحاً أو يكون متغير يحتوي على عدد صحيح.
   NoRadius = CVErr(2010)   NotANumber = 2020   InvalidArgument = CVErr(NotANumber)				
على سبيل المثال استخدام الدالة 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				

استخدام قيم الخطأ مضمنة

هناك سبعة قيم الخطأ المضمنة في Excel لنظام التشغيل mac. بيلووشووس الجدول رقم الخطأ (ثابت) قيمة الخطأ الحرفية، وقيمة الخطأ ثيكونفيرتيد.
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. والفرق الوحيد أن أخطاء ورقة العمل، Visual Basic for Applications يوفر أرقام الخطأ كبناء إينكونستانتس ويوفر أيضا قيم الخطأ الحرفية. هذه العناصر نوتبروفيديد لقيم خطأ معرف من قبل المستخدم. قيم الخطأ الحرفية يجب أن بينكلوسيد في أقواس مربعة كما هو موضح في الجدول أعلاه.

على سبيل المثال استخدام قيم خطأ مضمنة:
   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				

خطأ في التعليمات البرمجية لمعالجة مركزة

عند إضافة تعليمات برمجية لمعالجة الأخطاء إلى مشروع Visual Basic أبليكاتيونسماكروس، فسوف تكتشف أن نفس الأخطاء وتعالج عبر اندوفر مرة أخرى. يمكنك تقليل حجم التعليمات البرمجية الخاصة بك وريكويريدتو جهد كتابة التعليمات البرمجية عن طريق كتابة بعض الإجراءات التي تستدعي كوديكان معالجة الأخطاء الخاصة بك للتعامل مع حالات الخطأ الشائعة.

ما يلي هو مثال لإجراء دالة تقوم بعرض أميساجي المقابل للخطأ الذي حدث، وحيثما أمكن، فإنه يسمح للمستخدم بتحديد الإجراء الذي يجب اتخاذه التالية عن طريق اختيار زر أبارتيكولار. ثم إرجاع الرمز الرقم إلى ثاتكاليد إجراء ذلك.
   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				

مقاطعة معالجة المستخدم

يمكن مقاطعة مستخدم Visual Basic للتطبيقات الإجراء بيبريسينج الأمر + فترة. من الممكن تعطيل المقاطعات فوربروسيدوريس في التطبيقات الخاصة بك الانتهاء. ومع ذلك، إذا لم ديسابليثي المقاطعات المستخدم في الانتهاء من الإجراء، يمكنك التأكد من ذلك يوربروسيدوري يتم إعلامك عند حدوث مقاطعة حتى يتسنى كلوسيفيليس، قطع الموارد المشتركة، أو استعادة فاريابليسبيفوري المعدلة إرجاع التحكم للتطبيق للمستخدم.

يمكنك تعويض المقاطعات المستخدم في الإجراءات الخاصة بك عن طريق تعيين الخاصيةEnableCancelKey إلى إكسليرورهاندلير. عند تعيين هذه الخاصية، سينشئ كافة المقاطعات خطأ رقم 18، التي يمكن حصرها استخدام عبارة عن خطأ إدارة وقت. يمكنك معالجة الخطأ لوقف الإجراء وإنهاء البرنامج. إذا تم استخدام العبارة استئناف لمتابعة العملية بعد خطأ وقت التشغيل الملائمة، يتم تجاهل المقاطعة.

من الممكن أيضا أن يتجاهل المقاطعات المستخدم تماما عن طريق تعيين الخاصيةEnableCancelKey إلى إكسلديسابليد. في هذه الحالة، يتجاهل Excel لنظام التشغيل Mac كافة محاولات بواسطة المستخدم لمقاطعة الإجراء قيد التشغيل. لاستعادة المقاطعة الافتراضية معالجة، تغيير إعداد الخاصية EnableCancelKey إلى إكسلينتيروبت. لمنع إجراء من تعطيل المقاطعات المستخدم بشكل دائم، Excel لنظام التشغيل Mac دوماً استعادة الإعداد الافتراضي للخاصية EnableCancelKey إلى إكسلينتيروبت عند اكتمال الإجراء التنفيذ الخاص به. للتأكد من معالجة المقاطعات بشكل صحيح ضمن التعليمات البرمجية، يجب بوضوح تعطيل أو اعتراض المقاطعات في كل مرة يتم فيها تنفيذ الإجراء. يجب ملاحظة أنه يمكن استخدام ذلك معالج المقاطعة واحد فقط لكل إجراء والذي يستخدم نفس المعالج لكافة أخطاء وقت التشغيل بذلك الإجراء.

يوضح المثال التالي إجراء يتطلب لارجيبيريود وقت لإكمال. إذا كان مستخدم مقاطعات الإجراء، اعتراض اروريس. تؤكد المقاطعة المستخدم أولاً وقف شولداكتوالي الإجراء وثم إنهاء العملية على نحو منظم.
   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 وثم اضغط CTRL + BREAK بسرعة، يظهر مربع أميساجي الذي يطلب منك ما إذا كان سيتم إيقاف معالجة السجلات. إذا نقرت فوق نعم، يظهر مربع رسالة أخرى مع "حدث المقاطعة المستخدم". عند النقر فوق موافق في مربع الرسالة هذا، ينتهي الماكرو. إذا يوكليك لا في مربع الرسالة الأولى، يستمر تنفيذ الماكرو.

بيان السيرة الذاتية

بيان السيرة الذاتية استئناف تنفيذ تعليمات برمجية بعد انتهاء هاندلينجروتيني خطأ.
XL98 XL2001 XL2004 شل

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 193247 - آخر مراجعة: 12/05/2015 09:21:11 - المراجعة: 2.0

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

  • kbnosurvey kbarchive kbdtacode kbhowto kbmt KB193247 KbMtar
تعليقات